Import/Insert in Tables aus CSV

Alles zum SQL-Dialekt

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Import/Insert in Tables aus CSV

Beitrag 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?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 366
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Re: Import/Insert in Tables aus CSV

Beitrag von Klaus Schuster »

Wandle sie doch einfach in eine Datei mit INSERT-Anweisungen um.
Gruß Klaus
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Import/Insert in Tables aus CSV

Beitrag 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.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: Import/Insert in Tables aus CSV

Beitrag 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, ...
--
Hans-Peter
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Import/Insert in Tables aus CSV

Beitrag 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....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Import/Insert in Tables aus CSV

Beitrag von nightcrawler »

Ist zwar Delphi, aber vielleicht hilft dir das.
https://www.jd-engineering.de/load-csv- ... advantage/
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Import/Insert in Tables aus CSV

Beitrag 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.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Import/Insert in Tables aus CSV

Beitrag 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
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Import/Insert in Tables aus CSV

Beitrag 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;
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Antworten