Файл данных загрузки MySQL с соответствующими заголовками

Вот моя текущая ситуация:

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

Проблема:

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

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


person John    schedule 16.02.2015    source источник


Ответы (1)


До определенного момента вы можете использовать синтаксис 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 в первую очередь.

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

person Bjoern    schedule 16.02.2015