MySQL загружает локальный файл данных в неправильном числовом формате

#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, поскольку проблема, вероятно, заключается в запятых внутри чисел