импорт CSV-файла на сервер mysql, но вставляется только первая строка с неправильными записями - PullRequest
1 голос
/ 09 мая 2020

Цель: мне нужно импортировать CSV-файл на MySQL сервер Проблема: вставляется только 1-я строка, и это тоже с неправильным вводом.

формат моего файла csv:

lifelock,LifeLock,,web,Tempe,AZ,1-May-07,6850000,USD,b
lifelock,LifeLock,,web,Tempe,AZ,1-Oct-06,6000000,USD,a
lifelock,LifeLock,,web,Tempe,AZ,1-Jan-08,25000000,USD,c
mycityfaces,MyCityFaces,7,web,Scottsdale,AZ,1-Jan-08,50000,USD,seed
flypaper,Flypaper,,web,Phoenix,AZ,1-Feb-08,3000000,USD,a

запрос для создания sql таблица:

create table fund(permalink varchar(20), company varchar(20), numEmps int, category varchar(15),
city varchar(20),state varchar(15),fundedDate Date,raisedAmt int, raisedCurrency longtext,round longtext);

запрос для импорта CSV-файла:

load data infile '/var/lib/mysql-files/TechCrunchcontinentalUSA.csv' into table fund fields terminated by ',' 
lines terminated by '\n' (permalink, company, @numEmps , category , city ,state, @funded, @raised, raisedCurrency ,round )
set numEmps=cast(@emps as unsigned), raisedAmt = cast(@raised as unsigned), fundedDate =STR_TO_DATE(@funded, '%d-%b-%Y') ;

Выходное изображение enter image description here

Ответы [ 2 ]

0 голосов
/ 10 мая 2020

sql запрос

load data infile '/var/lib/mysql-files/TechCrunchcontinentalUSA.csv' into table fund fields terminated by ',' 
lines terminated by '\r' (permalink, company, @numEmps , category , city ,state, @funded, @raised, raisedCurrency ,round )
set numEmps=cast(@emps as unsigned),fundedDate =STR_TO_DATE(@funded, '%d-%b-%y'), raisedAmt = cast(@raised as unsigned) ;

Я изменил терминатор строки с \n на \r и изменил date с %d-%b-%y на %d-%b-%y, потому что в дате Y принимает 4 цифры в качестве года, т.е. 2007 в качестве года, а в y - 2 di git год, то есть 07.

Для спецификатора формата даты посетите здесь .

0 голосов
/ 09 мая 2020

Ваш первичный ключ установлен на AUTO_INCREMENT? Также проверьте, есть ли в вашем CSV-файле разделитель новой строки для каждой строки. Иногда данные столбца csv могут быть слишком большими, чтобы поместиться в определенный столбец db, скажем, вы определяете столбец города для хранения значения varchar(20), но в файле csv у вас есть экземпляр, где город содержит более 20 символов.

Вы всегда можете проверить свой csv с помощью этого онлайн-инструмента (убедитесь, что у вас нет конфиденциальных данных, так как это сторонний инструмент)

Или попробуйте это тоже, если ваш CSV-файл и имя таблицы совпадают:

mysqlimport --lines-terminated-by='\n' --fields-terminated-by=',' --fields-enclosed-by='"' --verbose --local db_name TechCrunchcontinentalUSA.csv

Укажите флаги имени пользователя и пароля -uroot -proot, если у вас одна настройка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...