Mysql
 sql >> база данни >  >> RDS >> Mysql

Може ли mysql да импортира csv или друг txt файл в една колона?

Да, можете да го направите с няколко стъпки:

Първо Създайте временна таблица за етапи (нека я наречем import). ) с една колона, която ще съдържа редове като редове на файла с изходни данни

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

и заредете данни от файла в таблицата

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

Втори Ако приемем, че имате целева таблица (нека я наречем words ), което изглежда нещо подобно

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

можем да разделим всеки ред на думи и да ги вмъкнем в words таблица със заявка

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

ЗАБЕЛЕЖКА:

  • предполага се, че думите ви са разделени точно с един интервал
  • тази заявка ще раздели до 100 думи. Ако имате нужда от повече или по-малко, можете да коригирате ограничение, като редактирате вътрешната подзаявка или ако импортирате редовно, вместо това помислете за използване на таблица с постоянно изчисление (числа).

Трето Пуснете или съкратете (ако ще го използвате отново, за да импортирате още файлове) таблицата за прехвърляне

DROP TABLE import;

Ето SQLPiddle демонстрация, която показва стъпка втора.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво е името на ограничението по подразбиране в MySQL?

  2. Матрица за търсене на всички правоъгълници с дадени размери (изберете блокове от седалки)

  3. Създайте любим изглед на списък със споделени предпочитания

  4. mysql вмъква празна дата, ако датата не е правилна

  5. Извличане на 2 последни публикации за всяка категория