sql >> Databasteknik >  >> RDS >> Mysql

MySQL LOAD DATA INFILE:fungerar, men oförutsägbar linjeavslutare

Du kan ange radavgränsare som '\n' och ta bort efterföljande '\r'-avgränsare vid behov från det sista fältet under laddning.

Till exempel -

Anta att vi har filen 'entries.txt'. Radavgränsaren är '\r\n', och endast efter rad ITEM2 | CLASS3 | DATE2 avgränsaren är '\n':

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

CREATE TABLE-sats:

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

Vår LOAD DATA INFILE-fråga:

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

Visa resultat:

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


  1. Du kan inte ange måltabell "NAME" för uppdatering i FROM-satsen

  2. Räkna antalet rader som inte ligger inom 10 sekunder från varandra

  3. MONTHS_BETWEEN() Funktion i Oracle

  4. Hur kan jag fråga ett värde i SQL Server XML-kolumnen