Создать таблицу из CSV в MySQL

Опубликовано: 7 Января, 2023

Файлы CSV (значения, разделенные запятыми) представляют собой файл, содержащий фреймы данных, разделенные запятой (как правило). Эти файлы имеют текстовый формат и не привязаны к конкретной программе или стандарту, благодаря чему они широко используются. Фреймы данных довольно часто хранятся в виде файлов CSV, которые впоследствии можно легко использовать для извлечения данных.

В этой статье мы узнаем, как создать таблицу из файла CSV в MySQL.

Дистрибутив MySQL должен быть установлен в операционной системе. В целях демонстрации мы будем использовать следующий файл CSV для создания таблицы:

Этот файл CSV содержит 4 столбца:

  1. СВИДАНИЕ
  2. ОБЩЕЕ ВРЕМЯ
  3. ЧАСЫ
  4. МИНУТЫ

Создание скелетной таблицы:

ШАГ 1: Мы создадим таблицу в MySQL, содержащую информацию о каждом столбце CSV-файла. Затем мы скопировали данные из CSV-файла в каждый из столбцов.

Запрос:

CREATE TABLE table_name ( csv_column_1 
DATATYPE, csv_column_2 DATATYPE,
 csv_column_3 DATATYPE ....);

Где последние 2 записи могут быть расширены до количества столбцов в файле CSV. т. е. csv_column_2/3/4… переходит к количеству столбцов в файле CSV. В нашем случае есть 4 столбца, каждый из которых имеет следующие типы данных:

DATE            => Date
TOTAL_TIME      => INT
HOURS           => INT
MINUTES         => INT

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

Запрос:

CREATE TABLE TRANSFER ( DATE DATE, 
TOTAL_TIME INT, HOURS INT, MINUTES INT);

Это создаст таблицу. Для просмотра таблицы введите запрос:

Запрос:

SELECT * FROM TRANSFER;

Который отображает пустую таблицу. Поскольку мы не добавили в него никаких данных.

ШАГ 2:

Теперь, чтобы добавить в него данные из файла CSV, выполните следующее:

Запрос:

LOAD DATA INFILE "file.csv" 
INTO TABLE TRANSFER
FIELDS TERMINATED BY "," 
ENCLOSED BY """ LINES TERMINATED BY "
"
IGNORE 1 ROWS;

Оператор LOAD DATA INFILE позволяет считывать данные из текстового файла и импортировать данные файла в базу данных. После выполнения вышеуказанного оператора мы снова отображаем таблицу, используя:

Запрос:

SELECT * FROM TRANSFER;

К чему результирующая таблица:

Таким образом, вы можете импортировать данные из CSV-файла в базу данных MySQL.

Объяснение:

Первая строка указывает компилятору загрузить данные из файла с именем « file.csv » в таблицу с именем TRANSFER. Во второй строке указано, что поля (разные ячейки) заканчиваются запятой, данные ячейки могут быть заключены в двойные кавычки (чтобы разрешить использование запятых внутри ячейки), а строки заканчиваются символом новой строки. Третья строка указывает компилятору игнорировать первую строку, так как она содержит имена столбцов таблицы, о которых мы уже упоминали при создании таблицы.

Поэтому план загрузки данных в таблицу будет таким:

Запрос:

LOAD DATA INFILE "_path_to_csv_" 
INTO TABLE TABLE_NAME
FIELDS TERMINATED BY "," 
ENCLOSED BY """ LINES TERMINATED BY "
"
IGNORE 1 ROWS;

where,

_path_to_csv_  => path to the csv file
TABLE_NAME     => Name of the table (skel table) 
in which the data is to be copied

Если файл Excel имеет другие разделители, это также можно указать во второй строке.