sql >> Databasteknik >  >> RDS >> Mysql

Kan mysql importera en csv eller annan txt-fil till en kolumn?

Ja, du kan göra det i några steg:

Först Skapa en temporär mellanställningstabell (kan kalla den import ) med en kolumn som innehåller rader som rader i källdatafilen

CREATE TABLE `import` (
  `line` varchar(512) DEFAULT NULL
);

och ladda data från filen till tabellen

LOAD DATA INFILE '/path/to/your/file.txt'
INTO TABLE import
FIELDS TERMINATED BY '\n'
LINES  TERMINATED BY '\n'

Andra Förutsatt att du har en måltabell (låt oss kalla den words). ) som ser ut ungefär så här

CREATE TABLE `words` (
  `word` varchar(64) DEFAULT NULL
);

vi kan dela upp varje rad i ord och infoga dem i words tabell med en fråga

INSERT INTO words (word)
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(line, ' ', n.n), ' ', -1) word
  FROM import CROSS JOIN 
(
   SELECT a.N + b.N * 10 + 1 n
     FROM 
    (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
   ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
    ORDER BY n
) n
 WHERE n.n <= 1 + (LENGTH(line) - LENGTH(REPLACE(line, ' ', '')))
 ORDER BY n.n

OBS:

  • antagandet är att dina ord separeras exakt med ett mellanslag
  • den här frågan delar upp till 100 ord. Om du behöver mer eller mindre kan du justera en gräns genom att redigera den inre underfrågan eller om du importerar regelbundet än att överväga att använda en beständig tally(tal)-tabell istället.

Tredje Släpp eller trunkera (om du kommer att använda den igen för att importera fler filer) mellanställningstabellen

DROP TABLE import;

Här är SQLFiddle demo som visar steg två.




  1. MySQL INSERT ....ON DUPLICATE UPDATE - Lägger till en till autoinkrementet

  2. 4 typer av information att inkludera i din CRM-databas

  3. PHP genererar dynamisk PDO-infogning

  4. Konsekutiv PreparedStatement god praxis