2015-10-12 7 views
2

Я пытаюсь загрузить файл csv в mySQL. Я хочу игнорировать 3 столбца, поэтому я использую символ «@» для достижения этого. Кажется, что все загружается отдельно от данных после первого игнорируемого столбца (с именем: «ignore1»).Загрузить данные в mySQL и игнорировать определенные столбцы

Является ли это ошибкой программного обеспечения mySQL?

LOAD DATA LOCAL INFILE 'Z:/test.csv' 
    INTO TABLE IN_Apolo 
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    IGNORE 1 ROWS 
    (name, @date, @ignore1, @ignore2, @ignore3, column3, column4) 
    set date = str_to_date(@date,'%Y-%m-%d') 
    ; 

колонка3 и column4, как представляется, NULL

UPD:

Я попытался использовать этот код и он работает:

LOAD DATA LOCAL INFILE 'Z:/test.csv' 
    INTO TABLE IN_Apolo 
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    IGNORE 1 ROWS 
    (@name, @date, @column3, @column4) 
    set [email protected], date = str_to_date(@date,'%Y-%m-%d'), [email protected], [email protected]  ; 

, но он должен работать с первая версия тоже.

ответ

2
LOAD DATA LOCAL INFILE 'Z:/test.csv' 
INTO TABLE IN_Apolo 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
(@name, @date,@column3, @column4) 
set [email protected],date=str_to_date(@date,'%Y-%m-%d'),[email protected],[email protected]; 

Попробуйте использовать это ...

+0

Все те же. –

+0

Проверьте наличие обновленного .. удалите столбцы, которые вы не хотите использовать .. из-за того, что ваш файл может иметь только 4 столбца, поэтому он принимает значения до тех пор, пока @ ignore2 других не примет значение null. –

+0

Это то, что я только что сделал, и это сработало. Это странно. он должен работать в любом случае. –

0

Таблица:

DROP TABLE IF EXISTS `test_table`; 

CREATE TABLE `test_table` (
    `name` VARCHAR(20) DEFAULT NULL, 
    `date` DATE DEFAULT NULL, 
    `ignore_1` VARCHAR(20) DEFAULT NULL, 
    `ignore_2` VARCHAR(20) DEFAULT NULL, 
    `ignore_3` VARCHAR(20) DEFAULT NULL, 
    `column_3` VARCHAR(20) DEFAULT NULL, 
    `column_4` VARCHAR(20) DEFAULT NULL 
) ENGINE=InnoDB; 

Файл:

/path/to/test_file.csv

"name","date","ignore_1","ignore_2","ignore_3","column_3","column_4" 
"name_0","2000-01-01","ignore_1_0","ignore_2_0","ignore_3_0","column_3_0","column_4_0" 
"name_1","2000-01-02","ignore_1_1","ignore_2_1","ignore_3_1","column_3_1","column_4_1" 
"name_2","2000-01-03","ignore_1_2","ignore_2_2","ignore_3_2","column_3_2","column_4_2" 

MySQL из командной строки:

mysql> LOAD DATA INFILE '/path/to/test_file.csv' 
     INTO TABLE `test_table` 
     FIELDS TERMINATED BY ',' 
     ENCLOSED BY '"' 
     LINES TERMINATED BY '\n' 
     IGNORE 1 ROWS 
     (`name`, @`date`, @`ignore_column`, @`ignore_column`, @`ignore_column`, `column_3`, `column_4`) 
     SET `date` = STR_TO_DATE(@`date`, '%Y-%m-%d'); 
+0

Теперь он работает. Спасибо. У меня все еще есть неотвеченный ответ: http://stackoverflow.com/questions/33503879/load-an-xlsx-file-into-mysql-table-or-convert-it-to-csv-in-php –