Kermit: mysql LOAD DATA LOCAL INFILE

Beitrag lesen

Hallo zusammen,

ich möchte ein lokales File in eine leere DB importieren.
Dabei ist zu beachten:

  • Spalte 1 soll importiert werden
  • Spalte 2 ist zu ignorieren
  • Spalte 3 soll importiert werden (ist PK)
  • Spalte 4 und 5 sollen importiert aber in der Reihenfolge getauscht werden
  • die DB kann auch weitere Felder beinhalten die aber leer bleiben sollen (NULL)
  • Leerstellen sollen mit NULL ersetzt werden

Mein erstes Bsp. unten funktioniert (vollimport ohne zusätzliche und umgetauschte Spalten).
Im zweiten Versuch bekomme ich die Meldung:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use n
ear 'TERMINATED BY ';' LINES TERMINATED BY '\n'' at line 8

-- myfile1.txt Import File ohne COL_x
COL_1;0;COL_4;COL_3
a1;100;a4;a3
b1;200;b4;
c1;300;;c3
d1;301;d4;d3

-- myfile2.txt Import File
COL_1;COL_x;0;COL_4;COL_3
a1;ax;100;a4;a3
b1;bx;200;b4;
c1;cx;300;;c3
d1;dx;301;d4;d3

--
-- Tabellenstruktur für Tabelle mapping\_test
--

CREATE TABLE IF NOT EXISTS mapping\_test (
  FELD\_1 text COLLATE latin1_german1_ci COMMENT 'Feld 1',
  FELD\_2 int(11) NOT NULL COMMENT 'Feld 2, Primary key',
  FELD\_3 text COLLATE latin1_german1_ci COMMENT 'Feld 3',
  FELD\_4 text COLLATE latin1_german1_ci COMMENT 'Feld 4',
  FELD\_5 text COLLATE latin1_german1_ci COMMENT 'Feld 5',
  FELD\_6 text COLLATE latin1_german1_ci COMMENT 'Feld 6',
  PRIMARY KEY (FELD\_2)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;

-- BSP funktioniert
LOAD DATA LOCAL INFILE 'myfile1.txt'
INTO TABLE mapping_test
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n';

-- BSP fehlerhaft
LOAD DATA LOCAL INFILE 'myfile2.txt'
INTO TABLE mapping_test (val1, @dummy, val2, val3, val4)
SET
FELD_1=val1,
FELD_2=val2,
FELD_3=val4,
FELD_4=val3,
FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n';

Vielen Dank und Grüße
Kermit