2013-07-22 2 views
1

У меня есть CSV-файл, который отформатированный следующим образом:нагрузки один столбец из CSV в MySQL

Rank, URL 
1, www.google.com 
2, www.facebook.com 
etc... 

У меня есть таблица со структурой

url, source, date_added 

Где каждый файл CSV имеет другой исходный идентификатор ,

Я использую следующий запрос, чтобы загрузить мои данные

load data local infile 'this.csv' 
into table seeds.seed 
fields terminated by ','; 

Что не совсем то, что я хочу, но это моя точка. Что я хочу сделать, это выбрать столбец 2, который нужно вставить в качестве поля моего URL, и установить для источника значение 0 для каждой записи. Поэтому я думаю, что-то вроде этого ...

load data local infile 'this.csv' 
into table seeds.seed(url, source) 
select col1, '0' 
fields terminated by ','; 

Какая правильная нотация для col1? И не хватает ли каких-либо других ключевых частей для запроса?

ответ

2
LOAD DATA INFILE 'this.csv' 
    INTO TABLE seed 
    (col1) SET source = 0; 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"' 
LINES TERMINATED BY '\r\n'; 

Посмотрите на вопрос SO.

This является эталонным

+0

Хорошие примеры в предоставленной SO-ссылке. –

1

запросов, которые в конечном итоге работает

load data local infile 'this.csv' into table seeds.seed 
fields terminated by ',' lines terminated by '\n' 
(@col1,@col2) set [email protected], source='0'; 
+0

большая доля .. My +1. –

1

это довольно сложно, используя входной_файл данные нагрузки. Я провел всю прошлую неделю, пытаясь разобраться с множеством многочисленных ошибок. Я дам вам свои идеи.

Я не могу видеть ваше заявление о создании таблицы, поэтому я не знаю, какие типы данных вы используете. Если у вас есть целые поля, вы должны поместить по крайней мере 0 в каждое поле в вашем файле csv, даже если это неверно. вы удалите его позже после импорта.

Если ваше целочисленное поле является auto_increment как первичный ключ, вы можете опустить поле alltogether. не делайте мою ошибку и просто покидайте поле там без каких-либо значений. Удалите его полностью, иначе ваш csv начнет с символа терминатора поля и не вызовет никаких проблем.

нагрузки входной_файл данные 'FILE.CSV'

в таблицу mytablename

поля завершенного ''

линии заканчиваются '\ г \ п' - (для окон)

игнорировать 1 строку (поле1, поле2, поле4 и т. Д.) - вы указываете свои поля в своем csv. Если у вас есть поля без данных, вы можете удалить их из своего csv и опустить их из списка здесь.

игнорировать 1 строку - игнорирует первую строку csv, которая содержит ваш список полей.

Set ID = NULL,

field3 = NULL;

Я установил поле id auto_increment равным null, так как его не в файле csv, и mysql знает, что он существует и что с ним делать.

Также установите поле3 в null, поскольку оно не имеет значений и было удалено из файла csv в качестве примера.

Смежные вопросы