2015-10-01 3 views
-1

Я импортировал CSV-файл, где определенный столбец имеет десятичное число.Преобразование числовых полей в MySQL

В исходном файле excel (перед сохранением его в CSV) первое число столбца отображается как 218 790. Когда я выбираю ячейку, номер отображается как 218790.243077911.

В CSV-файле номер отображается как 218790, и когда я выбираю ячейку, она составляет 218 790.

Когда я импортирую файл на mySQL и показываю созданную таблицу, номер отображается как 218.000000000.

Вот код, который я использовал:

create table Apolo_Test(
Leads decimal (15,9) 
); 

LOAD DATA LOCAL INFILE 'C:/Users/SCRIPTS/file.csv' 
INTO TABLE Apolo_Test 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
IGNORE 7 ROWS 
; 

Я попытался обновить формат с этим:

update Apolo_Test set Leads = format(Leads, 10, 'de_DE'); 

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

Как можно заставить его работать на mySQL без использования каких-либо MACROS в excel?

UPD: Это работает, но я получаю некоторые предупреждения, хотя я проверил файл CSV и поля:

create table Apolo_Test(
Ad_Group varchar(50), 
Impacts int, 
Leads decimal (10,3) 
); 

LOAD DATA LOCAL INFILE 'C:/Users/apolo.siskos/Desktop/SCRIPTS/11/Adalyser.csv' 
INTO TABLE Apolo_Test 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
IGNORE 7 ROWS 
(Ad_Group, Impacts, @Leads) 
SET Leads = replace(@Leads, ',', ''); 
; 

alter table Apolo_Test ADD IPL decimal (10,6) after Leads; 
update Apolo_Test set IPL=Impacts/Leads; 
select * from Apolo_Test; 

ответ

1

Вы должны использовать этот синтаксис:

LOAD DATA LOCAL INFILE 'C:/path/to/mytable.txt' IGNORE 
INTO TABLE mytable 
FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n' 
(int_col, @float_col) 
SET float_col = replace(@float_col, ',', '.'); 

Дополнительную информацию можно найти here

+0

Я получаю сообщение об ошибке, и я попытался изменить заказ. Это не работает :( –

+0

@ApoloRadomer Что такое сообщение об ошибке? – Jens

+0

Кажется, что проблема заключается в десятичной (15,9) строке. Я получаю предупреждение о «Data Truncated», в котором содержится больше данных, чем были входные столбцы Я проверил, что данные в столбцах невелики. Я также открыл.csv-файл в блокноте ++ и нет пустых столбцов. –

1

Разделитель тысяч не должен иметь значения при перемещении данных вокруг - внутренние значения Excel и файлы CSV и MySQL внутренние значения не включают его. Сюда относится только «форматированный» вывод. И вы не должны использовать форматированный вывод для перемещения чисел вокруг.

Будьте осторожны с локалью, например de_DE.

Немецкий «218.790» - это то же, что и на английском языке «218,790».

«218790.243077911», скорее всего, будет тем, что было у Excel внутри номера. "218,790", вероятно, будет English представление на экране; обратите внимание на разделитель английских тысяч.

В CSV-файле число отображается как 218790, а когда я выбираю ячейку, это 218,790.

Что вы имеете в виду? Возможно, что в файле нет запятой или точкой? Но что вы подразумеваете под «выбором ячейки»?

Я не вижу, как получить «218.000000000» без усечения.

+0

Когда я нажимаю на ячейку на excel. Ячейка показывает 218790, но вкладка формулы сверху показывает 218 790. –

+0

Хммм ... Это кажется обратным. Место сверху, где вы вводите значение, должно иметь номер без каких-либо запятых или точек. Ячейка должна отображать ее в соответствии с форматированием (Формат> Ячейки> Числа> ...) –

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