2015-02-16 5 views
0

Вот моя текущая ситуация:загрузки данных MySQL входной_файл с соответствующими заголовками

  • У меня есть CSV-файлы с X столбцов.
  • У меня есть пустая база данных SQL с столбцами Y.

Проблема:

  • CSV-файлы могут содержать столбцы базы данных SQL не имеет.
  • База данных SQL может содержать столбцы/ключи, отсутствующие в файле CSV.
  • Файлы CSV будут иметь сопоставимые столбцы Z с базой данных SQL; которые могут быть идентифицированы только через строку 1 (заголовки). Они не могут быть идентифицированы по заказу.
  • Нельзя использовать графический интерфейс, например, HeidiSQL. Требуется решение командной строки.

Я хочу загрузить CSV-файл в пустую базу данных; оставляя все переменные, отсутствующие в файле CSV. Как это происходит и что делать? Мои попытки приводят к MYSQL, предполагая, что столбцы упорядочены так же, как и база данных.

ответ

2

До определенного момента вы можете использовать синтаксис MySQL LOAD DATA INFILE. Полностью настроенный пример может выглядеть следующим образом (пропустить одну строку, вставьте в col1 и col3 вашей таблицы):

load data local infile '/path/to/your.csv' 
into table `yourdb`.`yourtable` 
fields escaped by '\\' terminated by '\t' 
lines terminated by '\n' 
ignore 1 lines 
(`col1`, `col3`); 

Если у вас есть CSV данные, которые вы не хотите в таблице ... либо добавить несколько столбцов в вашей таблице для них и удалять эти столбцы впоследствии или удалять их из вашего csv в первую очередь.

Если это становится все сложнее, вам почти наверняка придется закодировать его на языке программирования по вашему выбору.

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