2016-03-02 2 views
0

У меня есть CSV-файл (12 ГБ), который экспортируется из базы данных Oracle,Импорт из оракула в MySQL с помощью CSV

отформатирован как

6436,, N ,,,,,,,,, ,,, 04/01/1999,04/01/1999,352,1270,1270,406,406,1999,1,31/01/1999,0,88,0, А, 11/12/2005, N, 0 , 11/12/2005 ,,,, 1270,1,0,, 2974 ,,,,,,,,,,,,,,,,,,,,,,,,

Как вы см., что у него много нулевых значений (в основном целое число), И когда я импортирую его в базу данных mysql, он заполняет нулевые значения нулем

Мол,

6436,0,0,, 0,0,0,0,0,0,0,0,0,0,4,04/01/1999,04/01/1999,1270,1270,406,406,1999,1,31,31/01/1999,88,0, А, 11/12/2005, N, 0,11/12/2005,0,0,0,1270 , 1,0,, 2974,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,,, 0,0,00/00/0000, 0,, 0,0

Что здесь представляет собой настоящая проблема? Спасибо.

+0

поскольку SQL NULL буквально означает "неизвестное значение". csv не имеет нулей, периода. он имеет пустые строки, которые НЕ являются неизвестными значениями. они являются строками длины ноль. если вы хотите, чтобы эти поля стали нулевыми в вашей таблице, вам нужно сообщить db об этом во время импорта, например. 'load ... set columnX = if (length (valueX) = 0) then null else valueX' –

ответ

0

Я полагаю, что это с полезным комментарием @Marc B

я написал что-то вроде

LOAD DATA LOCAL INFILE '/path/data.csv' INTO TABLE table_name 
FIELDS TERMINATED BY ',' 
IGNORE 1 LINES 
(columns with @) 

SET 
    column = IF(length(@column)= 0,null,@column), 
    date = str_to_date(@date, '%d/%m/%Y'); 
Смежные вопросы