LOAD DATA LOCAL INFILE не импортирует никаких записей
Я работаю над проектом, который требует импорта данных CSV в таблицу MySQL, используя Workbench. Я попытался запустить команду ниже. Я не получаю никаких ошибок, однако никакие записи не импортируются в таблицу. Обратите внимание, я попытался изменить строку, оканчивающуюся на \n
тоже попробовал \r
, что привело к тому же результату.
Я ценю любые предложения о том, как решить.
Это запрос, который я пытался:
LOAD DATA LOCAL INFILE 'data-to-import.csv' INTO TABLE db.t1
COLUMNS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(id,age,spns,pns,spns2,sns,ps,ss,gid,term,band)
Данные к import.csv
,18,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
,19,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
,20,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
,21,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
,22,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
,23,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
,24,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
,25,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
,26,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
,27,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
,28,0.455,0.62,0.774,1.088,2.416,3.702,1,10,1
,29,0.455,0.62,0.792,1.121,2.489,3.702,1,10,1
определение db.t1
CREATE TABLE `t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`age` int(11) NOT NULL,
`spns` decimal(4,4) NOT NULL,
`pns` decimal(4,4) NOT NULL,
`spns2` decimal(4,4) NOT NULL,
`sns` decimal(4,4) NOT NULL,
`ps` decimal(4,4) NOT NULL,
`ss` decimal(4,4) NOT NULL,
`gid` int(11) NOT NULL,
`term` int(11) DEFAULT NULL,
`band` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1 ответ
При взгляде на ваш SQL кажется, что у вас могут быть проблемы с ограничителем строки.
Попробуй это:
LOAD DATA LOCAL INFILE 'data-to-import.csv' INTO TABLE db.t1
COLUMNS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(id,age,spns,pns,spns2,sns,ps,ss,gid,term,band)
Если ваш файл поступил из Windows, терминатор строки - CR/LF. У вас это как LF/CR.
Если файл взят из *nux, ваш терминатор строки - это просто перевод строки, в этом случае ваш SQL будет выглядеть так:
LOAD DATA LOCAL INFILE 'data-to-import.csv' INTO TABLE db.t1
COLUMNS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id,age,spns,pns,spns2,sns,ps,ss,gid,term,band)
Надеюсь это поможет!
Я просто запустил следующий код:
drop schema if exists db;
create schema db;
use db;
CREATE TABLE `t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`age` int(11) NOT NULL,
`spns` decimal(4,4) NOT NULL,
`pns` decimal(4,4) NOT NULL,
`spns2` decimal(4,4) NOT NULL,
`sns` decimal(4,4) NOT NULL,
`ps` decimal(4,4) NOT NULL,
`ss` decimal(4,4) NOT NULL,
`gid` int(11) NOT NULL,
`term` int(11) DEFAULT NULL,
`band` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
LOAD DATA LOCAL INFILE 'c:/temp/data-to-import.csv' INTO TABLE db.t1
COLUMNS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(id,age,spns,pns,spns2,sns,ps,ss,gid,term,band);
SELECT * FROM t1;
Я скопировал данные из того, что вы опубликовали, и поместил их в мою временную папку. Работал нормально.
Прежде всего, данные, которые вы разместили, НЕ имели строки заголовка, поэтому я не уверен, почему у вас есть IGNORE 1 LINES там.
Кроме того, попробуйте указать путь к имени файла, как я, и посмотрите, работает ли он.
Если это не так, пожалуйста, дайте мне знать, где файл возник. Это все еще может быть проблемой с ограничителем строки.
Итак, основываясь на нашем чате, вы работаете в Mac OSX, и терминатор строки - "\r". Просто используйте это, и вам должно быть хорошо идти.