Seite 1 von 1

Import/Insert in Tables aus CSV

Verfasst: Do, 11. Feb 2021 16:59
von Manfred
Es soll zwar mit dem ADS gemacht werden, aber ich frage es mal hier nach. Wie muß/kann man Daten in eine SQl Tabelle importieren/anfügen, die aus einer CSV Datei kommen? Wie macht man dem Server klar, welche Spalte wo rein muß und wie?

Re: Import/Insert in Tables aus CSV

Verfasst: Do, 11. Feb 2021 17:31
von Klaus Schuster
Wandle sie doch einfach in eine Datei mit INSERT-Anweisungen um.

Re: Import/Insert in Tables aus CSV

Verfasst: Do, 11. Feb 2021 17:37
von Manfred
HI Klaus,
wie immer, als ich den Beitrag hier eröffnet hatte und kurz durch die Wohnung spazierte, fiel mir Dein Vorschlag auch ein. Die CSV Datei zeilenweise einlesen und dann Spalte für Spalte mit einem Insert oder Update versehen, so wie gewünscht. Vorher evtl. noch den Header auslesen um die Überschriften zu bekommen. Ich hatte sowas schonmal vor einigen Jahren für eine Befütterung eines SQL Servers gemacht.
Ich dachte nur, es gibt evtl einen Befehl dafür, der das einfacher ermöglichen würde.

Re: Import/Insert in Tables aus CSV

Verfasst: Do, 11. Feb 2021 17:45
von HaPe
Hallo Manfred !

Ich habe auf die Schnelle keinen Link für den ADS direkt gefunden, aber das Stichwort heißt hier BULK INSERT.
Das gibt es beim PostGreSQL, $MS-SQL-Server, MySql, ...

Re: Import/Insert in Tables aus CSV

Verfasst: Do, 11. Feb 2021 17:46
von Manfred
Hi HaPe,
das hatte ich auch irgendwo im I-Net gefunden, dachte aber auf einen kurzen Blick das wäre eine Zusatzsoftware. Habe ich mich wohl vertan....

Re: Import/Insert in Tables aus CSV

Verfasst: Do, 11. Feb 2021 20:50
von nightcrawler
Ist zwar Delphi, aber vielleicht hilft dir das.
https://www.jd-engineering.de/load-csv- ... advantage/

Re: Import/Insert in Tables aus CSV

Verfasst: Di, 16. Feb 2021 9:26
von Manfred
ok, ich werde dann die CSV Datei zeilenweise auslesen.
Aber wie geht man unter dem ADS vor, wenn man ein Update machen will auf die SLQ Tabelle, wenn der Satz vorhanden ist, und wenn nicht dann ein INSERT?
Es gibt ein IIF(), aber irgendwas mache ich da wohl falsch.

Re: Import/Insert in Tables aus CSV

Verfasst: Di, 16. Feb 2021 9:44
von Marcus Herz
Merge ist das was du brauchst:

Code: Alles auswählen

merge  <table>
on key1 = <VAL1> and key2 = <VAL2>.....  // Key definiiton
when not matched then insert (<fiieldlist) values(<valueslist>)
when matched then update set field1 = <VAL1>, ....
siehe auch Hilfe

Re: Import/Insert in Tables aus CSV

Verfasst: Di, 16. Feb 2021 9:57
von nightcrawler
bei einem Import würde ich immer über eine Zwischentabelle gehen. Wenn der Import dann geklappt hat, wie von Marcus vorgeschlagen über MERGE in die richtige Tabelle übertragen. Falls etwas schiefgeht, ist zumindest die DB nicht versaut.
Temp-Tabelle mit derselben Struktur wie das original erstellen:

Code: Alles auswählen

SELECT * INTO #anytempname FROM anysource WHERE 1=0;