[gelöst]NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 10:21

hallo zusammen,

im zuge eine großen datenübernahme ist es notwendig geworden, aus mehreren sql-tables (keine nav-db) - nav tables zu erzeugen. eigentlich brauch ich nur die datentypen und spaltennamen - die daten bekomm ich schon rein - nur "will" ich keine 50 nav-tables von hand erzeugen ...mit schätzungsweise [ironie] drölftausend spalten [/ironie].

nun also meine eigentliche frage:
gibt es da ein tool, was mir die arbeit erleichtern könnte?
die tables kann ich sowohl als excel als auch als sql-table bereitstellen.
vielleicht kennt ihr ja was, was mir onkel google nicht zeigen will :P

ps:

ist nicht zwingend nav2013 bezogen
Zuletzt geändert von sweikelt am 23. Juli 2013 17:01, insgesamt 1-mal geändert.

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 10:29

Ich kenne leider ebenfalls solch ein Tool nicht - ist aber auch eine eher ungewöhnliche Anforderung.
Ich hoffe für dich, dass der Abgleich der Datentypen keine großen Schwierigkeiten bereiten wird:
http://msdn.microsoft.com/en-us/library/dd338650.aspx

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 10:38

aber natalie,

wie ich die datentypen mappe, weiß ich doch ;) - trotzdem vielen dank für den link :D
die anforderung ist allerdings sehr ungewöhnlich.
ich kann mir auch die tables erzeugen und lege die felder als txt an und formatiere die im nachhinein im übernahmereport.
allerdings wäre mir von vornherein der korrekte datentyp lieber.
ich muss sowieso nen übernahme-report schreiben, um die
daten aus der zu übernehmenden db in unsere branchenlösung korrekt zuordnen zu können...ein klassischer beinschuss oder doch bauchschuss?

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 10:48

sweikelt hat geschrieben:wie ich die datentypen mappe, weiß ich doch ;)

Umso besser - denke aber auch an all die stillen Mitleser, die auch etwas lernen möchten ;-)

...ein klassischer beinschuss oder doch bauchschuss?

Kannst du uns am Ende des Projektes hier berichten :twisted: :roll:

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 10:56

Du möchtes den Inhalt der Systemtabellen wissen? So wie hier: http://msdn.microsoft.com/de-de/library/ms189082%28v=sql.105%29.aspx ?

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 11:13

@markus, nein den inhalt brauch ich nicht ;)

ich will mir lediglich die arbeit ersparen, aus einer "nicht-nav-sql-db" - nav-tables per hand zu erzeugen.
beim von hand erzeugen muss ich mir die datentypen der "nicht-nav-sql-db" ansehen und die dann in nav nachbilden (durch hilfe des links von natalie)
da das aber nen riesiger aufwand ist, dachte ich, es gibt vll ein tool, welches mir aus einer sql-table eine nav-konforme txt-datei erzeugt, die bereits die korrekten datentypen und spaltennamen beinhaltet.
diese txt könnte ich dann importieren und hätte die nav-table in der db

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 11:24

also das automatisch Mappen könnte man in Access oder SQL-Server automatisch erledigen:
Aus
Code:
SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Tabellenname'
könnte man ein Tabelle der bestehenden Tabellenstruktur erstellen.

Aus http://msdn.microsoft.com/en-us/library/dd338650.aspx erstellt man eine zweite Tabelle.

Die beiden Tabellen verbindet man über die SQL-Datentypen und erhält als Ergebnis Spaltenname und NAV-Datentyp. Dann Export in einen Editor oder via Excel mit ein paar zusätzlichen Feldern (für Texte, Komma,...) und dann in eine Textdatei. Dann evtl noch manuelle Anpassungen und Import in NAV.

Volker

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 11:37

vsnase hat geschrieben:...Dann Export in einen Editor oder via Excel mit ein paar zusätzlichen Feldern (für Texte, Komma,...) und dann in eine Textdatei. Dann evtl noch manuelle Anpassungen und Import in NAV.
Volker


und wie würdest du das dann in eine nav-konforme-textdatei exportieren, sodass ich diese txt dann in nav importieren kann und damit dann eine nav-table erzeuge?

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 12:05

hab es jetzt mal anders gemacht. ich nutz das management-studio, rechtsklick auf die table, create in, dann wähle ich mir im script die db aus, in der die table erstellt werden soll und erzeuge diese. zusätzlich muss die table noch in der sql-table object eingebunden werden. ich prüfe weiter und geb dann hier mal ne zusammenfassung - glaube zwar nicht, dass es jemals jemand braucht, aber man weiß ja nie ;)

ps:

vielen dank für die anregungen und hinweise!

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 12:08

sweikelt hat geschrieben:glaube zwar nicht, dass es jemals jemand braucht, aber ...

Sag das nicht! Ich könnte wetten, du musst dir die Lösung nur deshalb selber basteln, weil irgendwer vor dir es nicht für nötig befunden hat, den Lösungsweg oder gar fertige Skripte/Objekte hier (oder in einem anderen Forum) zu hinterlassen ...

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 12:24

sweikelt hat geschrieben:
vsnase hat geschrieben:...Dann Export in einen Editor oder via Excel mit ein paar zusätzlichen Feldern (für Texte, Komma,...) und dann in eine Textdatei. Dann evtl noch manuelle Anpassungen und Import in NAV.
Volker


und wie würdest du das dann in eine nav-konforme-textdatei exportieren, sodass ich diese txt dann in nav importieren kann und damit dann eine nav-table erzeuge?


z. B. über "Verketten" in Excel.
1. Feld: {Date ...} Properties {CaptionML...} Fields {
2. Feld: lfd Numer
3. Feld: NAV-Datentyp
4. Feld: Spaltenname
...
x. Feld: }

Volker

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 12:34

hehe, natalie da haste recht ;)

nun gut - ich fummel weiter daran.
ich hab "OH WUNDER", die tables in nav drin. natürlich auf dem unsaubersten weg, den es gibt, aber drin ist drin.

nur blöd, dass ich auf die tables nicht zugreifen kann, da bei nem run oder beim design oder beim kompilieren die meldung erscheint, dass die table leer ist (na klar ist die leer) :/
daran häng ich grad noch - ideas any1? :P

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 12:59

sweikelt hat geschrieben:hehe, natalie da haste recht ;)

nun gut - ich fummel weiter daran.
ich hab "OH WUNDER", die tables in nav drin. natürlich auf dem unsaubersten weg, den es gibt, aber drin ist drin.

nur blöd, dass ich auf die tables nicht zugreifen kann, da bei nem run oder beim design oder beim kompilieren die meldung erscheint, dass die table leer ist (na klar ist die leer) :/
daran häng ich grad noch - ideas any1? :P


Weil Du in der Object Table nur Datensätze vom Typ Table und nicht TableData angelegt hast?

Ich finde den Weg absolut unsauber.
Ich hoffe die Spalten sind auch alle not null etc eingestellt. Decimal(38,20) usw

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 13:10

@ jan, ja der weg ist auch wirklich unsauber, habe ich ja schon gesagt.

mir geht es aber auch nur darum, die tables als nav-tables zu erhalten. die kommen dann später per import in ne saubere db, wo die datenübernahme stattfinden soll
in der object table stehen beide datensätze (typ 0 und typ 1) ;)
und ja, alle spalten sind not null

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 13:14

Hallo,

es sollte kein großes Problem darstellen, Textdateien mit NAV- Tabellenobjekten zu erstellen, die man im Anschluss importiert.
Wenn du die Daten allerdings nur für die Übernahme benötigst, kannst du nicht die Daten mit CU(s) importieren, die die Daten gleich da hin schreiben, wo sie hin sollen?

Gruß,, Fiddi

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 13:26

@fiddy, um die cu's nutzen zu können, muss ich die tables aus der zu übernehmenden db in meiner nav-db haben. das ist ja das grundlegende problem hier.
die db, aus der die tables kommen, ist keine nav-db, sondern liegt nur als sql-db vor. da ich ein absoluter t-sql frischling bin, würde es zu lange dauern, mir mit sql-statements die daten in die korrekten tables zu ziehen.

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 13:31

sweikelt hat geschrieben:@fiddy, um die cu's nutzen zu können, muss ich die tables aus der zu übernehmenden db in meiner nav-db haben. das ist ja das grundlegende problem hier.
die db, aus der die tables kommen, ist keine nav-db, sondern liegt nur als sql-db vor. da ich ein absoluter t-sql frischling bin, würde es zu lange dauern, mir mit sql-statements die daten in die korrekten tables zu ziehen.


SELECT INTO :P

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 13:35

Ich vermute mal:
Deine SQL-Tabellen haben als erste Spalte kein timestamp.

Volker

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 13:38

JanGD hat geschrieben:SELECT INTO :P


Und das gips sogar im Kontextmenu des SQL-Servers/Mgmt-Studios bei der Tabelle. 8-)

Aber aufpassen: dort wird gern ein 'not null' eigetragen wo's nicht hingehört.

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 13:38

select into...hmmm ja - nein wenn es so einfach wäre, würde ich euch hier nicht belästigen.
wenn ich die daten aus der zu übernehmenden db (db A) in unsere branchendb (db B) übernehmen möchte, muss ich auch unsere logik beachten.
da gehören verkettungen dazu und dann ist der datentyp aus db A der table x nicht gleich dem datentypen der table xyz aus db B

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 13:41

vsnase hat geschrieben:Ich vermute mal:
Deine SQL-Tabellen haben als erste Spalte kein timestamp.

Volker


doch :( - wobei ich atm erstma nur testweise eine nav-table aus einer nav db xy in eine db z (ebenfalls nav db) geschubst hab

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 13:59

@fiddy, um die cu's nutzen zu können, muss ich die tables aus der zu übernehmenden db in meiner nav-db haben. das ist ja das grundlegende problem hier.
die db, aus der die tables kommen, ist keine nav-db, sondern liegt nur als sql-db vor. da ich ein absoluter t-sql frischling bin, würde es zu lange dauern, mir mit sql-statements die daten in die korrekten tables zu ziehen.


  • Damit du mit CUs Daten importieren kannst, benötigst du keine Tabellen. Das kann man auch in alter Dataport- Manier auch direkt verarbeiten (oder du benutzt gleich einen XML-Port für den Import).
  • Wenn du dir die Struktur deiner Ausgangstabellen ausgibst oder ermittelst (Tabellenname,Feldname, Typ, Größe) kannst du mit einer einfachen CU eine Textdatei erzeugen, die NAV- Tabellenobjekte enthält. Diese Datei kannst du dann im Objektdesigner importieren, und hast saubere NAV- Tabellen im System.

Gruß, Fiddi

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 14:18

Wenn du dir die Struktur deiner Ausgangstabellen ausgibst oder ermittelst (Tabellenname,Feldname, Typ, Größe) kannst du mit einer einfachen CU eine Textdatei erzeugen, die NAV- Tabellenobjekte enthält. Diese Datei kannst du dann im Objektdesigner importieren, und hast saubere NAV- Tabellen im System


genausowas möchte ich und das versuch ich nun auch.
ps: der grund warum die nav-tables über den sql-server nicht in eine andere nav-db geschoben werden können ist, dass diese verschobenen tables keine fields haben (also keine fields in nav).

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 14:43

Es mag ja sein, dass ich es nicht richtig lese: Willst Du eine Tabelle in NAV anlegen und verwenden, oder willst Du Daten aus einer externen Tabelle in eine (bestehende Tabelle) in NAV importieren? Evtl. gehen für Deinen Fall ja auch linked Tables.

Volker

Re: NAV-Tables aus Excel /SQL erzeugen

23. Juli 2013 16:22

ich möchte eine table in nav anlegen und die dann mit daten füllen, damit ich die daten dann später per übernahmeroutine in unsere branchenlösung übernehmen kann, wobei dabei ich nicht einfach nur daten von table A in table B schaufeln kann, sondern eine übernahmelogik generieren muss

leider klappt es grad nicht, dass ich per report eine bestehende table mit feldern versehen kann

vorgehen: ich gebe mir die felder einer table aus der "nicht-nav-sql-db" A in eine text-datei aus, erstelle mir in nav eine table (ohne felder) und versuche nun, die felder per report zu erzeugen - also auf die table field ein insert zu machen - keine sorge, das mapping ist atm kein problem!

nur leider kommt es wieder zum fehler: "Die Tabelle XYZ ist leer", sobald der insert angesprochen wird. egal ob insert(true) oder false