#mysql
#mysql
Вопрос:
У меня есть файл csv, отформатированный следующим образом,
sth, sth, "100,000,000", sth, "200,000"
sth, sth, "200,000,000", sth, "500,000"
Когда я использовал
mysql> load data local infile "thefile.csv" into table mytable terminated by ',' enclosed by '"' lines terminater by 'rn';
затем такие числа, как «100 000 000», «500 000», усекаются.
Пожалуйста, помогите мне!
Комментарии:
1. Как усекается? В какое поле вы загружаете данные?
Ответ №1:
Удалите пробелы из CSV-файла:
sth,sth,"100,000,000",sth,"200,000"
sth,sth,"200,000,000",sth,"500,000"
И попробуйте использовать этот оператор для загрузки данных —
LOAD DATA INFILE 'thefile.csv' INTO TABLE mytable
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY 'rn'
(column1, column2, @var1, column4, @var2) -- specify actual field names
SET column3 = REPLACE(@var1, ',', ''), column5 = REPLACE(@var2, ',', ''); -- remove thousand separators
Ответ №2:
попробуйте этот подход в php:
$in = fopen('filename.csv', 'r');
while (($row = fgetcsv($in, 10000, ',', '"')) !== false) {
mysql_query("INSERT INTO ....");
}
fclose($in);
ссылка: fgetcsv
Комментарии:
1. Я не уверен, будет ли это работать лучше, чем исходный код OP, поскольку проблема, вероятно, заключается в запятых внутри чисел