2016-07-13 7 views
1

У меня есть файл csv, который я хочу импортировать в мою базу данных. Однако столбцы в файле csv не соответствуют столбцам в таблице, в которую я хочу импортировать. Я хотел бы сделать две вещи:Импорт другой таблицы в базу данных и добавление полей

  1. Импорт таблицы, но только некоторые из столбцов
  2. значения по умолчанию для столбцов, которые в таблице я ввожу не имеют.

Надеюсь, я объяснил это достаточно хорошо. Не слишком уверен, как я могу добавить «код» для этого вопроса, но я добавил некоторые изображения.

Вот моя существующая таблица:

Columns in existing table

Вот столбцы для файла CSV Я хочу импортировать

enter image description here

Я хотел бы, чтобы каким-то образом импортировать только имя (как заголовок), slug и created_at, updated_at для этого файла csv в мою таблицу. Кроме того, я хотел бы, чтобы идентификатор добавлялся автоматически, а по умолчанию - «exam_id» и «популярные» логические значения.

ответ

0

LOAD DATA INFILE - это то, что вам нужно.

Внимательно прочитайте следующее: http://dev.mysql.com/doc/refman/5.7/en/load-data.html.

Самое интересное для вас:

По умолчанию, когда нет списка столбцов не предусмотрено в конце оператора DATA INFILE НАГРУЗКИ , входные линии, как ожидается, содержит поле для каждой таблицы колонка. Если вы хотите загрузить только некоторые из столбцов таблицы, указать список столбцов:

LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata 
(col1,col2,...); 

Вы также должны указать список столбцов, если порядок полей в файле ввода отличается от порядок столбцов в таблице. В противном случае MySQL не может определить, как сопоставить поля ввода с таблицами .

В списке столбцов могут быть либо имена столбцов, либо переменные пользователя. С пользовательскими переменными предложение SET позволяет выполнять преобразования по их значениям, прежде чем назначать результат столбцам .

Пользовательские переменные в предложении SET могут использоваться несколькими способами. Следующий пример использует первый столбец ввода для значения строки t1.column1 и назначает второй входной столбец пользовательской переменной , которая подвергается операции деления перед использованием для значения значения t1.столбец2:

LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @var1) SET 
column2 = @var1/100; 

Предложение SET может быть использован для подачи значения не выводится из входного файла . Следующие наборы заявления колонка3 к текущей дате и времени:

LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, column2) SET 
column3 = CURRENT_TIMESTAMP; 

Вы также можете отбрасывать значение ввода путем присвоения его переменный пользователя и не назначая переменный в столбец таблицы:

LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @dummy, 
column2, @dummy, column3); 

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

  • Нет связанных вопросов^_^