Roger: 1GB große Textdatei

hallo zusammen!

ich muss eine ca. 1gb große csv datei (komma separiert) in eine datenbank einlesen.
dabei tauchten für mich mehrere fragen auf:

[1] ist mysql eigentlich noch die richtige db dafür? (vom preis her sicherlich, aber was ist mit der performance?)

[2] falls ja, wie bekomme ich die daten hinein? mit php wohl nicht, da ein skript auszuführen (das die daten in die db schreibt) länger als 30 sekunden braucht (ich habs probiert, 's werden nur ca 18000 einträge gemacht), wird es abgebrochen. wäre perl eine alternative? oder soll ich die textdatei gleich mit inserts versehen?

[3] das problem ist eben, das die datei schweinegross ist und sämtliche operationen zwischen 15 und 60 minuten dauern können. ein dran rumbasteln und probieren ist nicht ganz so effektiv ;)

ich wär für evtl. ratschläge dankbar.

r.

  1. Hi,

    [1] ist mysql eigentlich noch die richtige db dafür? (vom preis her sicherlich, aber was ist mit der performance?)

    jo, wenn dein Server nicht ganz schwachbruestig ist, kommt MySQL einfach mit mehreren (hundert) GB Daten gut aus.

    [2] falls ja, wie bekomme ich die daten hinein? mit php wohl nicht, da ein skript auszuführen (das die daten in die db schreibt) länger als 30 sekunden braucht (ich habs probiert, 's werden nur ca 18000 einträge gemacht), wird es abgebrochen. wäre perl eine alternative? oder soll ich die textdatei gleich mit inserts versehen?

    mysqlimport ist dein Freund. Oder LOAD DATA INFILE[1].

    Jan
    --
    [1] http://www.mysql.com/doc/en/LOAD_DATA.html

    1. Hi,

      mysqlimport ist dein Freund. Oder LOAD DATA INFILE[1].

      yo, data infile ist mein freund ;)
      danke!
      ich bekomme allerdings dabei eine fehlermeldung. jedesmal wird bei eintrag 27198 abgebrochen:
      duplicate entry '9' for key 1

      das irgendwas doppelt ist, kann ich noch erkennen, aber was/wo?

      Jan

      [1] http://www.mysql.com/doc/en/LOAD_DATA.html

      1. Hi,
        Du hast einen UNIQUE oder PRIMARY (was UNIQUE impliziert) Key. Und darin duerfen halt keine doppelten eintrage vorkommen.

        Jan
        --