Halihallo Wolfgang
Nun kommt aber immer die folgende SQL-Fehlermeldung:
1062: Doppelter Eintrag '1' für SChlüssel 1.
Ich vermute, dass damit der Index (PrimaryKey) der Datenbank gemeint ist. Da aber in der Datei der Index gar nicht berücksichtigt ist, sondern in der Datenbank per Autoinkrement hochgesetzt werden soll, ist mir diese Fehlermeldung spanisch.
Warum? - Er _wird_ eben betrachtet. Per Default wird _jedes_ Attribut
(Spaltenname) so übernommen, wie in der CSV definiert. Falls also
der Primärschlüssel (in deinem Fall autoinc) das erste Feld der
Tabelle ist, wird dorthin der erste Wert eines Datensatzes aus der
CSV geschrieben.
Die Datei hält sich an die von mir vorgegebenen Trennzeichen usw.
Ja, aber keine Column List und somit wird auch die ID des Datensatzes
aus der CSV-Datei importiert; da dieser in deinem Fall in der
Datenbank bereits existiert, wird der Import mit einem Fehler
quittiert.
http://www.mysql.com/doc/en/LOAD_DATA.html
<cite>
By default, when no column list is provided at the end of the LOAD DATA INFILE statement, input lines are expected to contain a field for each table column. If you want to load only some of a table's columns, specify a column list:
mysql> LOAD DATA INFILE 'persondata.txt'
-> INTO TABLE persondata (col1,col2,...);
</cite>
Du musst die Column List _genau so_ definieren, wie die Daten in
der CSV-Datei abgespeichert sind. Falls also der Primary Key dort
_nicht_ definiert ist, musst du diese(s) Feld(er) auch in der Column
List auslassen. Wird in der CSV jedoch ein Primary Key definiert,
muss dieser auch in der Column List stehen.
Meine Frage an dich: Ist in der CSV-Datei auch der Primärschlüssel
definiert, oder befinden sich dort nur die anderen Daten? - Im
letzten Fall musst du der DB _genau_ sagen, welches CSV-Feld auf
welches Attribut der Datenbank "gemapped" wird.
Viele Grüsse
Philipp