2014-09-05 4 views
0

Я ввожу свои данные из файла csv так:Импорт CSV в MySQL - Смещение 1 Колонка

LOAD DATA LOCAL INFILE "c:\myfile.csv" INTO TABLE historic FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; 

Это работает почти идеально. В моей таблице есть одна другая строка, первая: автоинтенсированная колонка id. В противном случае файл csv и таблица MySQL отлично сочетаются. Когда я запускаю команду выше, она помещает первый столбец из csv в поле id. Он хочет, чтобы он действительно вошел во второй.

Есть ли способ, которым я могу изменить вышеуказанный оператор, чтобы указать столбцы или просто смещать его на 1? (пропуск первого столбца при импорте).

+0

Вы пытались загрузить его сначала во временную таблицу и использовать выбор в своем финальном столе? Таким образом, вы можете указать столбцы, которые вы хотите на нем. – vinibarr

+0

@vinibarr Нет, нет. Я хотел сначала увидеть, возможно ли это в одной команде. – KickingLettuce

+0

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

ответ

1

Вы можете загрузить свои данные столбцы задав порядка, которые вы собираетесь использовать в таблицу : LOAD DATA LOCAL FILE '/tmp/test.txt' INTO TABLE исторический (name_field1, name_field2, name_field3 ...);

Или, если вы предпочитаете, вы можете сначала загрузить его во временную таблицу и использовать инструкцию select, чтобы поместить ее в финальную таблицу (она медленнее).

2

При желании можно назвать столбцы, которые будут населены LOAD DATA, а просто опустить свой id столбец:

LOAD DATA LOCAL INFILE "c:\myfile.csv" INTO TABLE historic 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' 
(column2, colum3, column4, column5, ...)