"We are back" « oc.at

[UPDATED]Script um CSV-Datei in MS SQL Server 2000 zu importieren

semmerl 11.07.2004 - 14:15 2501 15
Posts

semmerl

Big d00d
Avatar
Registered: Sep 2003
Location: Weit weit weg
Posts: 262
Hallo

Suche ein Script (Sprache ziemlich egal, einzig schnell sollte es sein) mit dem ich ein Textfile einlesen kann (hat bestimmte Struktur) und es in eine DB speichern kann. DB sollte wenn möglich MySQL oder Postgres sein. Kennt irgendwer für dieses Problem Tutorials oder dergleichen oder kann mir sonst irgendwer mit meinem Problem weiterhelfen z.B. Welche Scriptsprache ich am besten verwenden sollte...


Mfg
Bearbeitet von semmerl am 12.07.2004, 10:38

vEspertine

offline..
Registered: Sep 2000
Location: graz
Posts: 4753
phpmyadmin kann csv files importieren

semmerl

Big d00d
Avatar
Registered: Sep 2003
Location: Weit weit weg
Posts: 262
Das weiß ich, aba ich muss das ganze automatisieren und alle paar Stunden über einen Cron aktualisieren. Sprich ich lies die Datenbank dann aus, und bereite es als Statistische Auswertung auf.... Und dabei bringt mir PHPAdmin nicht wirklich was, da ich das ja nicht automatisiert machen kann..

Tex

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
geht mit php recht einfach. text file (zeilenweise) einlesen und mit diversen string funktionen (siehe php.net) richtig zerlegen und dann in die datenbank speichern.

AoD

aka AngelOfDeath
Avatar
Registered: Nov 2002
Location: St. Pölten
Posts: 1482
Bei MySQL gibts da einen eigenen Befehl dafür: http://dev.mysql.com/doc/mysql/en/LOAD_DATA.html

Brauchst nur a batchdatei erstellen wo du den mysqlclient startest mit parameter und ihm eine datei mit mysql befehlen übergibst.
dort steht dann auch der LOAD DATA Befehl drinnen.

semmerl

Big d00d
Avatar
Registered: Sep 2003
Location: Weit weit weg
Posts: 262
Zitat von Tex
geht mit php recht einfach. text file (zeilenweise) einlesen und mit diversen string funktionen (siehe php.net) richtig zerlegen und dann in die datenbank speichern.
Bin PHP nicht wirklich bewandert ...

Hast da vielleicht irgendwo ein Tutorial, wie ich das machen muss??

Danke

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
gib bitte ein bsp für "strukturierte txt-datei"...

ansonsten schaust du am besten hier:
http://at.php.net/manual/de/ref.filesystem.php

semmerl

Big d00d
Avatar
Registered: Sep 2003
Location: Weit weit weg
Posts: 262
Mit strukturiert mein ich, die Textdatei hat bestimmte Trennzeichen, sprich man kann schön auf die einzelnen Daten zugreifen und sie aufsplitten, damit man die Datenbank befüllen kann.

WIe sie genau ausschaut kann ich euch morgen sagen, ist ein Firmenprojekt und hab derzeit das File noch nicht im speziellen gesehen..

semmerl

Big d00d
Avatar
Registered: Sep 2003
Location: Weit weit weg
Posts: 262
Habe nun die Vorgabe, dass ich das ganze nicht mit einer MySQL DB sondern mit einer MS SQL 2000 DB machen muss (Blöde Firmenpolitik)

Gibts beim SQL Server einen ähnlichen Befehl wie LOAD DATA INFILE wie bei MySQL oder wie könnte ich sonst eine automatisierte Einspielung einer CSV Datei in eine SQL Tabelle schaffen?
Jeder Tipp wäre hilfreich...

DANKE!

Master99

verträumter realist
Avatar
Registered: Jul 2001
Location: vie/grz
Posts: 12696
mit C# geht das ganz einfach...

ich hab das sogar AFAIK letzes jahr mal programmiert... muss mal nachschaun ob ich den code noch finde.

semmerl

Big d00d
Avatar
Registered: Sep 2003
Location: Weit weit weg
Posts: 262
Zitat von Master99
mit C# geht das ganz einfach...

ich hab das sogar AFAIK letzes jahr mal programmiert... muss mal nachschaun ob ich den code noch finde.


Wäre interessant, wenn du mir dieses Script eventuell zur Verfügung stellen könntest.

Was haltet ihr davon wenn ich das ganze mittels BCP oder DTSPaket mache? Ist das von der Geschwindigkeit her schnell (hab teilweise CSV Dateien mit 100.000 Datensätzen...)

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11342
Zitat von semmerl
Was haltet ihr davon wenn ich das ganze mittels BCP oder DTSPaket mache?

Das ist sicher die beste und einfachste Lösung, vermutlich auch die schnellste.

voyager

kühler versilberer :)
Avatar
Registered: Nov 2001
Location: Stmk/Austria
Posts: 3848
BCP is sicher die schnellste Lösung, lässt sich auch recht leicht automatisieren, nur wenn du nen fehler im file hast kannst die DB damit crashen, da die Sicherheitsmechanismen vom MSSQL beim bcp abgedreht sind

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Zitat von voyager
[...], nur wenn du nen fehler im file hast kannst die DB damit crashen, da die Sicherheitsmechanismen vom MSSQL beim bcp abgedreht sind
Really?

voyager

kühler versilberer :)
Avatar
Registered: Nov 2001
Location: Stmk/Austria
Posts: 3848
Zitat von Ringding
Really?

yes sir

bulk copy ist nur deswegen so schnell (bis zu mehreren 10000 datensätze / sec) weil die daten "raw" ohne überprüfung auf konsistenz in die db kopiert werden
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz