ubuntuusers.de

Textdatei in SQL einlesen

Status: Gelöst | Ubuntu-Version: Ubuntu 6.06 (Dapper Drake)
Antworten |

peter120

Anmeldungsdatum:
25. September 2005

Beiträge: 142

Hallo,

hat irgendwer eine Idde wie ich eine ca. 60 MB durch Komma getrennte Textdatei in eine SQL-DB einlesen kann. Die Verwaltung über Ecxel, Openoffice geht nicht, da zu viele Zeilen.
Ich dachte an sqlite etc.

danke
peter120

Moderiert von Chrissss:

Thema in das passende Forum geschoben.

dentaku

Anmeldungsdatum:
31. Januar 2005

Beiträge: 3778

Welche SQL DB ist es denn? MS SQL Server hat z.B. explizit eine solche Importfunktion.

Freedoor

Anmeldungsdatum:
10. Dezember 2006

Beiträge: 30

bei MySQL geht das ganze auch sehr komfortabel über das Web-Frontend PHPMyAdmin - Da gibt es explizit eine solche Funktion. Mit der Dateigröße könnte es zwar Probleme geben, aber man kann die Datei ja aufsplitten.

comm_a_nder

Avatar von comm_a_nder

Anmeldungsdatum:
5. Februar 2006

Beiträge: 2533

Wohnort: Dresden

Gibt es denn schon eine entsprechende Datenstruktur (Datenbank, Tabellen, Constraints usw), in dem diese Daten eingepflegt werden soll?
Der Datenimport ist dann eher trivial, mit sed und Konsorten ist in wenigen Schritten aus dem Textfile (wenn nötig weil zB die Verwendete Datenbank kein CSV Import ermöglicht) ein SQL Queryfile mit Inserts gebastelt.

SparkTheRookie

Anmeldungsdatum:
7. November 2005

Beiträge: 8

Wohnort: Kempten

Hallo peter120,

wow, 60 MB sind ja ein ganz schöner Batzen - über phpmyadmin würde die Einpflege in Häppchen zwar funktionieren, aber damit wärst du wegen dem PHP-Timeout sicher den ganzen Tag beschäftigt.

Wie comm@nder schon gesagt hat - ist es dir möglich, aus dem Textfile schon einmal gültige SQL-Statements (eventuell mit Inserts) zu produzieren?

Hast du zudem Zugang zur Shell des Servers, auf dem die Datenbank läuft, oder ist phpmyadmin deine einzige Möglichkeit?

Viele Grüße,

Sparky

oliver1804

Anmeldungsdatum:
27. März 2006

Beiträge: 279

Wohnort: Elmshorn

DIe 60 MB sind keinerlei Problem, wenn Du erst einmal eine Tabelle mit den benötigten Spalten (und deren Datentypen) erstellt hast.

MySQL ist hierfür eine gute Lösung - wenn Du für die Datenbank- & Tabellenerstellung eine graphische Benuzeroberfläche verwenden möchtest, dann empfehle ich den MySQL Administrator. Für den Import solltest Du als Hilfe ebenfalls den MySQL Query Browser installieren. Per LOAD DATA INFILE ... geht die Sache dann wirklich Ruck Zuck.

Sofern Du noch keine Erfahrungen mit Datenbanken hattest, solltest Du allerdings deine Denkweise etwas verändern (weg von der Tabellenkalkulation). Bei MySQL et al handelt es sich um sogenannte Backends, die die Daten in zu erstellenden Strukturen verwalten; auf diese Daten können dann wieder andere Anwendungen wie z.B. Tabellenkalkulationen zugreifen. Ein Datenpflege (Du möchtest ja sicherlich hier und da etwas hinzufügen?) kann dann z.B. per Query Browser oder auch MS ACCESS (nicht EXCEL!) erfolgen.

Wenn Du bisher keinerlei Erfahrung in diesem Bereich sammeln konntest (sagt DIr SQL etwas?), aber ein schnelles Ergebnis erzielen mußt, solltest Du dich möglicherweise zunächst einmal mit ACCESS oder aber auch mit BASE (ab OpenOffice 2.0; ich meine die interne Datenbank, deren Namen mir jetzt entglitten ist) auseinandersetzen. Wenn Du bisher mit EXCEL gearbeitet hast, dürfte dir eine Umsetzung in ACCESS am leichtesten fallen (kann ich aus eigener Erfahrung sagen), da Du dir (zunächst) keine großen Gedanken über Tabellengestaltung machen mußt, weil ACCESS diese Sachen für dich macht und "sichere" Standardwerte verwendet. Du kannst die Daten von EXCEL ganz einfach importieren.

Uber kurz oder lang wirst Du allerdings nicht drum herum kommen, DIr ein profunderes Wissen über die Materie anzueignen, wenn Du die Datenbank aufstocken mußt/möchtest. Außerdem hat ACCESS auch die sogenannte 2 GB-Grenze; wenn deine Daten diesen Bereich erreichen und Du unter Zeitdruck stehst, wirst Du erfahren, was Streß bedeutet.

Gruß
Oliver

peter120

(Themenstarter)

Anmeldungsdatum:
25. September 2005

Beiträge: 142

Hi,
danke für die Antworten. Ich war leider unterwegs und kann erst heute antworten.
Ich experimentiere im Augenblick mit sqlite. Auf die DB habe ich vollen Zugriff, da sie auf meinem Rechner liegen wird. Somit ist die Tabellenstruktur auch kein Thema, die kann ich passend anlegen.
Ich habe mit SQL-Abfragen etwas Erfahrung, allerdings nicht mit Programmierung.
Da ich mich von der MS-Welt getrennt habe fallen Access und Excel weg.
Openoffice Base finde ich keine Importmöglichkeit aus ASCII bzw. dat Ding friert ständig ein bzw. reagiert seeeehr träge. Deshalb dachte ich an sqlite.
Mysql habe ich eigentlich verworfen da ich auf einem Einzelplatzrechner keinen eigenen SQL-Server installieren möchte, den ich vom gleichen Rechner aus bedienen kann.

LOAD DATA INFILE klingt vielversprechend, werde ich ausprobieren. Tut´s da kommaseperation, oder muss eine anderes Trennzeichen z.B. Tab rein ?

gruß peter

oliver1804

Anmeldungsdatum:
27. März 2006

Beiträge: 279

Wohnort: Elmshorn

LOAD DATA INFILE

Hier wirst Du geholfen:

http://dev.mysql.com/doc/refman/5.0/en/load-data.html

und was den Separator angeht, so ist dies shietegol - schaust Du auf der Seite nach

TERMINATED BY 'string'

Gruß
Oliver

peter120

(Themenstarter)

Anmeldungsdatum:
25. September 2005

Beiträge: 142

Danke für die Info,

werde es ausprobieren.

Peter

Antworten |