Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL LOAD DATA INFILE :fonctionne, mais terminaison de ligne imprévisible

Vous pouvez spécifier le séparateur de ligne comme '\n' et supprimer les séparateurs de fin '\r' si nécessaire du dernier champ lors du chargement.

Par exemple -

Supposons que nous ayons le fichier 'entries.txt'. Le séparateur de ligne est '\r\n', et seulement après la ligne ITEM2 | CLASS3 | DATE2 le séparateur est '\n' :

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

Instruction CREATE TABLE :

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

Notre requête 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);

Afficher les résultats :

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