sql >> Database teknologi >  >> RDS >> Mysql

MySQL LOAD DATA INFILE:virker, men uforudsigelig linjeterminator

Du kan angive linjeseparator som '\n' og fjerne efterfølgende '\r'-separatorer om nødvendigt fra det sidste felt under indlæsning.

For eksempel -

Antag, at vi har filen 'entries.txt'. Linjeadskilleren er '\r\n', og kun efter linjen ITEM2 | CLASS3 | DATE2 separatoren er '\n':

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

CREATE TABLE-sætning:

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

Vores LOAD DATA INFILE-forespørgsel:

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);
 

Vis resultater:

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


  1. Matchende algoritme i SQL

  2. Mysql/Php - Aktuel dato og tid

  3. Indsættelse af nationale tegn i en orakel NCHAR eller NVARCHAR kolonne virker ikke

  4. Hvordan gemmer man unicode i MySQL?