Sebastian Becker: Datenimport CSV -> MySQL

Hallo,

ich möchte die Daten aus einer CSV-Datei in eine MySQL-Datenbank importieren. Die erste Zeile enthält die Feldnamen, die mit denen der entsprechenden Tabelle identisch sind. Die Tabelle hat allerdings mehr Felder als die CSV-Datei. Der Import klappt auch mittels phpMyAdmin und folgender SQL-Anweisung:

LOAD DATA LOCAL
INFILE '/is/htdocs/61037/www.meinedomain.de/oneadmin/export.txt'
REPLACE
INTO TABLE photo_gallery
FIELDS
TERMINATED BY '|'
OPTIONALLY ENCLOSED BY '"';

Allerdings werden die Felder nicht richtig zugewiesen. Die erste Zeile der CSV-Datei wird stattdessen auch importiert.

Auf welche Weise kann ich eine korrekte Zuweisung der Felder erreichen?

Danke für alle Hinweise, Grüße,

Sebastian Becker

  1. hi,

    Allerdings werden die Felder nicht richtig zugewiesen. Die erste Zeile der CSV-Datei wird stattdessen auch importiert.

    das sollte sich erledigt haben, wenn du dich mit http://dev.mysql.com/doc/mysql/de/load-data.html beschäftigst, und die dort erwähnten weiteren parameter richtig benutzt.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. Hallo, wahsaga,

      das sollte sich erledigt haben, wenn du dich mit http://dev.mysql.com/doc/mysql/de/load-data.html beschäftigst, und die dort erwähnten weiteren parameter richtig benutzt.

      Danke für den Hinweis.

      Beim Angeben einer Feldliste wie auf der genannten Seite beschrieben ...

      LOAD DATA LOCAL
      INFILE '/is/htdocs/61037/www.meinedomain.de/oneadmin/export.txt'
      REPLACE
      INTO TABLE photo_gallery (title,title_2,descp,descp_2,descpmore,descpmore_2,photo,creationyear,height,length,width,price,sizeunit,sold,photographer,category_id)
      FIELDS
      TERMINATED BY '|'
      OPTIONALLY ENCLOSED BY '"';

      meldet MySQL ...

      #1064 - You have an error in your SQL syntax

      Ich kann aber keinen Fehler finden - oder habe ich Tomaten auf den Augen?

      Grüße,

      Sebastian

      1. Ich kann aber keinen Fehler finden - oder habe ich Tomaten auf den Augen?

        Wahrscheinlich :-) Die Feldliste muss ganz nach hinten.

        1. Hallo,

          Ich kann aber keinen Fehler finden - oder habe ich Tomaten auf den Augen?

          Wahrscheinlich :-) Die Feldliste muss ganz nach hinten.

          In der Beschreibung heißt es ...

          -------------------------------------------------------------------

          Wenn Sie Daten nur in einige Tabellenspalten einladen wollen, geben Sie eine Felderliste an:

          mysql> LOAD DATA INFILE 'personen.txt'
                     INTO TABLE personen (spalte1,spalte2,...);

          Eine Felderliste müssen Sie ausserdem angeben, wenn die Reihenfolge der Felder in der Eingabedatei von der Reihenfolge der Tabellenspalten abweicht. Ansonsten kann MySQL nicht feststellen, wie er Eingabefelder Tabellenspalten zuordnen soll.

          -------------------------------------------------------------------

          Genau so habe ich es doch gemacht - oder etwa nicht?

          Grüße,

          Sebastian

          1. hi,

            Wenn Sie Daten nur in einige Tabellenspalten einladen wollen, geben Sie eine Felderliste an:

            mysql> LOAD DATA INFILE 'personen.txt'
                       INTO TABLE personen (spalte1,spalte2,...);

            Genau so habe ich es doch gemacht - oder etwa nicht?

            bei dir steht doch wohl nach eigener aussage noch

            FIELDS
            TERMINATED BY '|'
            OPTIONALLY ENCLOSED BY '"';

            dahinter - oder etwa nicht?

            gruß,
            wahsaga

            --
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
            1. Hallo, wahsaga,

              bei dir steht doch wohl nach eigener aussage noch

              FIELDS
              TERMINATED BY '|'
              OPTIONALLY ENCLOSED BY '"';

              dahinter - oder etwa nicht?

              zumindest das TERMINATED BY '|' ist ja eine notwendige Information. Dies wird ja auch in der Anleitung so beschrieben ...

              Grüße,

              Sebastian

              1. hi,

                bei dir steht doch wohl nach eigener aussage noch

                FIELDS
                TERMINATED BY '|'
                OPTIONALLY ENCLOSED BY '"';

                dahinter - oder etwa nicht?

                zumindest das TERMINATED BY '|' ist ja eine notwendige Information. Dies wird ja auch in der Anleitung so beschrieben ...

                und an welcher P-O-S-I-T-I-O-N steht diese option im manual ...?

                frontscheinwerfer sind beim gängigen auto nach auch ein vorgeschriebenes bestandteil - und du held wunderst dich jetzt gerade, dass deine karre nicht durch den TÜV kommt, weil du sie _hinten_ am auto angebracht hast ...?

                gruß,
                wahsaga

                --
                "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                1. Hallo,

                  und an welcher P-O-S-I-T-I-O-N steht diese option im manual ...?

                  In Beispielen beschränkt man sich normalerweise nur auf eine Schreibweise - das heißt aber nicht unbedingt, daß diese vorgeschrieben ist. Dennoch habe ich die Position schon mehrfach umgestellt - es funktioniert aber immer noch nicht.

                  frontscheinwerfer sind beim gängigen auto nach auch ein vorgeschriebenes bestandteil - und du held wunderst dich jetzt gerade, dass deine karre nicht durch den TÜV kommt, weil du sie _hinten_ am auto angebracht hast ...?

                  Der Vergleich hinkt. Bei einer Auflistung unabhängiger Anweisungen kommt es aus logischer Sicht nicht auf die Reihenfolge an. Mag sein, daß es bei mySQL anders ist oder daß ich die Logik nicht durchschaue ...

                  Grüße,

                  Sebastian

                  1. hi,

                    In Beispielen beschränkt man sich normalerweise nur auf eine Schreibweise - das heißt aber nicht unbedingt, daß diese vorgeschrieben ist. [...]
                    Bei einer Auflistung unabhängiger Anweisungen kommt es aus logischer Sicht nicht auf die Reihenfolge an.

                    trotzdem bist du vermutlich nicht auf die idee gekommen, die schlüsselworte LOAD DATA LOCAL ganz ans ende des statements zu schreiben, oder?
                    also scheinst du ja wohl doch vom vorhandensein einer reihenfolge auszugehen.

                    gruß,
                    wahsaga

                    --
                    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                    1. Hallo, wahsaga und dedlfix,

                      trotzdem bist du vermutlich nicht auf die idee gekommen, die schlüsselworte LOAD DATA LOCAL ganz ans ende des statements zu schreiben, oder?
                      also scheinst du ja wohl doch vom vorhandensein einer reihenfolge auszugehen.

                      Ihr mögt Recht haben - nach mehreren Anläufen hat es mittlerweile geklappt  :-)

                      Dafür tauchen jetzt neue Probleme auf - aber das ist ein neues Kapitel ...

                      Danke für die Hilfe - manchmal kommt man eben nicht auf das Einfachste ...

                      Grüße,

                      Sebastian

          2. In der Beschreibung heißt es ...

            Das ist nur ein Besipiel in dem einige optionale Elemente fehlen. Die genaue Syntax mit der Reihenfolge aller Elemente steht am Anfang der angegebenen Seite.

            1. Hallo,

              Das ist nur ein Besipiel in dem einige optionale Elemente fehlen. Die genaue Syntax mit der Reihenfolge aller Elemente steht am Anfang der angegebenen Seite.

              auch bei einer Umstellung der Reihenfolge ...
              LOAD DATA LOCAL
              INFILE '/is/htdocs/61037/www.mydomain.de/oneadmin/export.txt'
              REPLACE
              INTO TABLE photo_gallery
              FIELDS
              TERMINATED BY '|'
              (title,title_2,descp,descp_2,descpmore,descpmore_2,photo,creationyear,height,length,width,price,sizeunit,sold,photographer,category_id);

              ... bekomme ich eine Fehlermeldung  :-(

              Grüße,

              Sebastian

              1. hi,

                auch bei einer Umstellung der Reihenfolge ...
                ... bekomme ich eine Fehlermeldung  :-(

                die da lautet?

                gruß,
                wahsaga

                --
                "Look, that's why there's rules, understand? So that you _think_ before you break 'em."