jkoenig
Goto Top

Dateiformat für MS SQL BULK INSERT

Hallo und schönen guten Abend

Ich entwickle gerade eine Anwendung die Dateien in unterschiedlichen Formaten auf ein einheitliches Format bringen soll. Die Dateien in diesem Format sollen anschließend über ein SQL BULK INSERT in eine MS SQL Datenbank importiert werden.

Da die Dateien die ich bekomme Daten unterschiedlicher Tabellen enthalten sieht meine Ausgabe im Moment ungefär so aus:

#tb_Tabelle1
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7

#tb_Tabelle2
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7

#tb_Tabelle3
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7
Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7

Ist ein Import über BULK INSERT in diesem Format möglich oder müsste ich für jede Tabelle eine eigene Datei erstellen?

In Hoffnung auf eine baldige Antwort wünsche ich noch einen schönen Abend face-smile

JKoenig

Content-ID: 177190

Url: https://administrator.de/contentid/177190

Ausgedruckt am: 24.11.2024 um 22:11 Uhr

Biber
Biber 02.12.2011 um 18:36:40 Uhr
Goto Top
Moin JKoenig,

bekommst du nun Dateien (Flatfiles) oder bekommst du Tabellen aus einem Schema, einer anderen MSSQL-Instanz oder gar von einem anderem DBMS?

Und wo unterscheiden sich denn jetzt die "Formate", wie du es nennst?
Unterschiedliche Feldnamen, Feldtypen, Feldlängen, Constraints oder was?

Kannst du mal bitte ein sinnvolles typisches Beispiel für die Inhalte posten?

und was hat das alles mit BULK INSERT zu tun? Hast du keinen PK?

Grüße mit ganz vielen Fragezeichen
Biber
JKoenig
JKoenig 03.12.2011 um 08:52:19 Uhr
Goto Top
Hallo Biber,

ich habe die ganze Situation vielleicht etwas ungünstig beschrieben

die Dateien die ich bekomme werden von mir schon umgewandelt, und meine Ausgabe welche (über BULK INSERT) in die Datenbank importiert werden soll

sieht so aus:
#tb_Tabelle1Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7#tb_Tabelle2Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7#tb_Tabelle3Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7Feld1;Feld2;Feld3;Feld4;Feld5;Feld6;Feld7

Nun möchte ich wissen ob es möglich ist Texte in dieser Form (#<tabellenname> ... <feld>;<feld> ...) über BULK INSERT zu importieren oder ob ich für jede Tabelle eine eigene Datei anlegen muss die dann nur die Felder beinhaltet.

Grüße und hoffentlich ein paar Fragen beantwortend
JKoenig
60730
60730 03.12.2011 um 11:43:48 Uhr
Goto Top
moin,

[OT]

also ich weiß ja nicht - aber die Frage - ob ich für jede Tabelle eine eigene Datei anlegen muss hat sich mir im täglichen Leben eher selten gestellt.
Vielmehr muß ich des öfteren Tabellen in Happen zerlegen, damit die am Stück auch wirklich sauber eingelesen werden.
Ich hab aber auch keine so kleinen 7 Spalten mal 5 Datensätze face-wink
Und dann hab ich bei der Variante eine Datei- eine Tabelle auch einen Überblick - wo es hängt
Ob wo und welche - man sieht ja keinen SQL Befehl - Tabelle mucken macht und ob oder ob nicht da vorher ein Drop läuft oder laufen muss....

Alleine die "Programmierung" - wenn dies dann Tabelle jenes - ne echt nicht..
(ja ich weiß, das es gehen könnte - aber will ich unbedingt mit Schlittschuhen auf den Mount Everest?)

[/OT]
Ist das eine rhetorische Frage oder dein geplanter Workflow?


Gruß
Biber
Biber 03.12.2011 um 11:48:09 Uhr
Goto Top
Moin JKoenig,

ich bin immer noch nicht ganz sicher, ob ich dein Szenario richtig verstehe.

Wenn es denn so ist, wie es bei mir angekommen ist, nämlich

  • Es liegen Dateien (=Flatfiles in einem Filesystem) vor
  • mit gleichem Aufbau und gleichen Feldformaten
  • und -aus Datenbanksicht- unterschiedlichen Schlüsselfeldern/PrimaryKeys

-> dann kannst du zwar NICHT mit einem "BULK INSERT"-Kommando alle Quellen mit einem Tastendruck importieren,
ABER mit einer einer kleinen Stored procedure und/oder dem bcp-Utility geht das.

Das Prinzip ist in diesem Databasejournal-Artikel sehr schön skizziert.

Grüße
Biber
JKoenig
JKoenig 03.12.2011 um 12:17:33 Uhr
Goto Top
@timobeil

War der vorgegebene Workflow den ich gehen soll face-smile

@Biber

Die Situation hast du richtig verstanden.
Und vielen Dank für den Artikel, damit werde ich mich dann jetzt außeinandersetzen