sql >> Databáze >  >> RDS >> Mysql

Může mysql importovat csv nebo jiný soubor txt do jednoho sloupce?

Ano, můžete to udělat v několika krocích:

První Vytvořte dočasnou pracovní tabulku (nazvěme ji import ) s jedním sloupcem, který bude obsahovat řádky jako řádky zdrojového datového souboru

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

a načíst data ze souboru do tabulky

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

Za druhé Za předpokladu, že máte cílovou tabulku (nazvěme ji words ), která vypadá nějak takto

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

můžeme každý řádek rozdělit na slova a vložit je do words tabulka s dotazem

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

POZNÁMKA:

  • předpokládá se, že vaše slova jsou oddělena přesně jednou mezerou
  • tento dotaz rozdělí až 100 slov. Pokud potřebujete více či méně, můžete upravit limit úpravou vnitřního poddotazu nebo pokud provádíte import pravidelně, zvažte místo toho použití tabulky trvalých záznamů (čísel).

Třetí Přetáhněte nebo zkraťte (pokud ji znovu použijete k importu více souborů) pracovní tabulku

DROP TABLE import;

Zde je SQLFiddle demo, které ukazuje druhý krok.




  1. MySQL nebo PHP Transformujte řádky na sloupce

  2. Jak vybrat nejnovější sadu datovaných záznamů z tabulky mysql

  3. Zobrazit vztah rodič-dítě, když jsou rodič a dítě uloženy ve stejné tabulce

  4. PostgreSQL Streaming vs Logická replikace – srovnání