sql >> Databáze >  >> RDS >> Mysql

MySQL LOAD DATA INFILE:funguje, ale nepředvídatelný terminátor řádku

Můžete zadat oddělovač řádků jako '\n' a v případě potřeby odstranit koncové oddělovače '\r' z posledního pole během načítání.

Například -

Předpokládejme, že máme soubor 'entries.txt'. Oddělovač řádku je '\r\n' a pouze za řádkem ITEM2 | CLASS3 | DATE2 oddělovač je '\n':

COL1  | COL2   | COL3
ITEM1 | CLASS1 | DATE1
ITEM2 | CLASS3 | DATE2
ITEM3 | CLASS1 | DATE3
ITEM4 | CLASS2 | DATE4

Příkaz CREATE TABLE:

CREATE TABLE entries(
  column1 VARCHAR(255) DEFAULT NULL,
  column2 VARCHAR(255) DEFAULT NULL,
  column3 VARCHAR(255) DEFAULT NULL
)

Náš dotaz LOAD DATA INFILE:

LOAD DATA INFILE 'entries.txt' INTO TABLE entries
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(column1, column2, @var)
SET column3 = TRIM(TRAILING '\r' FROM @var);

Zobrazit výsledky:

SELECT * FROM entries;
+---------+----------+---------+
| column1 | column2  | column3 |
+---------+----------+---------+
| ITEM1   |  CLASS1  |  DATE1  |
| ITEM2   |  CLASS3  |  DATE2  |
| ITEM3   |  CLASS1  |  DATE3  |
| ITEM4   |  CLASS2  |  DATE4  |
+---------+----------+---------+


  1. Data jsou Null. Tuto metodu nebo vlastnost nelze volat na hodnoty null. (pomocí rozbalovacího seznamu)

  2. Monitorování protokolu transakcí

  3. Jak funguje SQLite Min()

  4. Hvězdné schéma vs. schéma sněhové vločky