From: <khs...@t-...> - 2006-01-08 10:05:56
|
<font style=3D"font-family: arial,helvetica,sans-serif;" size=3D"2"><schnipp><br /><br />From: Markus Heller <markus@re...> <br /> <b> <img width=3D"10" height=3D"12" src=3D"msg.gif" /> Import von Kundendaten </b> =A0<br /> 2006-01-07 11:46 <pre> Liebe Liste,<br /> <br /> Gibt es eine M�glichkeit, aus einer CSV-Liste Kunden einzupflegen? Ich w�re <br /> auch damit zufrieden, wenn ich Tabellennamen und -felder w��te, dann k�nnte <br /> ich mit Perl einiges machen. <br /> <br /> danke schon mal f�r die Info!!<br /> <br /> Markus<br /><br /></schnipp> </pre>Hallo Markus,<br /><br />sowas habe ich schon ueber PSQL gemacht.<br /><br />PSQL verarbeitet "Text"-Dateien die SQL-Befehle enthalten, z.B. ein INSERT. Es gibt auch eine COPY-Funktion (nicht SQL) die schneller arbeiten soll, weil ich aber den Import nur einmalig mache und die Datenmengen nicht so gross sind (2000 Zeilen) hier mit INSERT.<br /><br />Du musst aus Deiner CSV-Datei eben eine Datei mit SQL-INSERT-Befehlen machen und diese dann in PSQL ausf=FChren (das war wenn ich mich recht erinnere "\i <Dateiname>").<br /> <br />Die Umwandlung aus CSV in SQL kannst Du mit Perl oder mit fast jeder anderen Sprache machen.<br /><br />Mein Ausgangspunkt war eine Clipper/XBase-Applikation, mit Foxpro habe ich ASCII-Dateien erzeugt mit Feldtrenner Komma, allerdings Strings schon in Hochkomma eingeschlossen.<br /><br />Mein Perl-Programm sah so aus (kann man bestimmt noch viel schoener machen ;-):<br /><br />-------------------------------<br />#!/usr/bin/perl<br /># Quelldatei<br />open(DATEI,"</root/perl/kundexpo.txt") || die "Fehler beim Lesen";<br /># Zieldatei<br />open(DATEI2,">/root/perl/ergebnis2.txt") || die "Fehler beim >";<br /># Verarbeitung<br />while($zeile =3D <DATEI>)<br />{<br />=A0 $q++;<br />=A0 print "$q $zeile";<br />=A0 $neuezeile =3D $zeile;<br />=A0 # Zeilenumbruch entfernen<br />=A0 $neuezeile =3D~ s/[\n\r]//g;<br />=A0 # Einfache Hochkom= mas entfernen<br />=A0 $neuezeile =3D~ s/'//g;<br />=A0 # Anf=FChrungszeichen d= urch Hochkommas ersetzen<br />=A0 $neuezeile =3D~ s/"/'/g;<br />=A0 print DATEI2 "insert into customer (customernumber, name, department_1, zipcode, city, street, phone) values ($neuezeile);\n";<br />}<br />close(DATEI);<br />close(DATEI2);<br />print "\n\nAusgabe beendet\n";<br />-------------------------------<br /><br />Ach ja, falls Du eine andere Tabelle bearbeiten willst, die Struktur der Tabelle bekommst Du in PSQL mit "\d <tabellenname>".<br /><br />Gruss<br />Karl-Heinz<br /><br /><br /> </font> |