sql >> Database >  >> RDS >> Mysql

Kan mysql een csv- of ander txt-bestand in één kolom importeren?

Ja, je kunt het in een paar stappen doen:

Eerste Maak een tijdelijke staging-tabel (laten we het import noemen) ) met één kolom die regels bevat als rijen van het brongegevensbestand

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

en laad gegevens uit het bestand in de tabel

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

Tweede Ervan uitgaande dat je een doeltabel hebt (laten we het words noemen) ) dat er ongeveer zo uitziet

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

we kunnen elke regel in woorden splitsen en invoegen in words tabel met een vraag

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

OPMERKING:

  • aanname is dat je woorden precies gescheiden zijn door één spatie
  • deze zoekopdracht wordt opgesplitst in maximaal 100 woorden. Als je meer of minder nodig hebt, kun je een limiet aanpassen door de binnenste subquery te bewerken of als je regelmatig importeert, overweeg dan om in plaats daarvan een persistente tally(nummers)-tabel te gebruiken.

Derde Zet de staging-tabel neer of kap deze af (als u deze opnieuw wilt gebruiken om meer bestanden te importeren)

DROP TABLE import;

Hier is SQLFiddle demo die stap twee laat zien.




  1. MySql-queryanalysator - gratis oplossingen

  2. Mysql selecteer waar veld in csv-tekenreeks

  3. Installeer mysqlclient voor Django Python op Mac OS X Sierra

  4. Kan de mysql-server niet starten in ubuntu