English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Импорт данных MySQL

В этой главе мы расскажем о нескольких простых командах импорта данных MySQL.

1. Команда mysql для импорта

Формат синтаксиса команды mysql для импорта данных выглядит следующим образом:

mysql -uимя_пользователя -pпароль < данные_базы_данных_для_импорта(w3codebox.sql)

Пример:

# mysql -uroot -p123456 < w3codebox.sql

Эти команды импортируют всю резервную базу данных w3codebox.sql.

2. Команда source для импорта

Для импорта базы данных с помощью команды source необходимо сначала войти в терминал базы данных:

mysql> create database abc; # создание базы данных
mysql> use abc; # использование созданной базы данных 
mysql> set names utf8; # настройка кодировки
mysql> source /home/abc/abc.sql # импорт резервной базы данных

3. Импорт данных с помощью LOAD DATA

MySQL предоставляет предложение LOAD DATA INFILE для вставки данных. В следующем примере файл dump.txt будет считан из текущей директории и данные из этого файла будут вставлены в таблицу mytbl текущей базы данных.

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;

 Если указан ключевой слово LOCAL, это означает чтение файла по пути с клиента. Если его не указано, файл читается по пути на сервере.

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

Грамматика подзапросов FIELDS и LINES для двух команд одинакова. Оба подзапроса являются необязательными, но если они оба указаны, подзапрос FIELDS должен出现在 подзапросом LINES до него.

Если пользователь указывает подзапрос FIELDS, его подзапросы (TERMINATED BY, [OPTIONALLY] ENCLOSED BY и ESCAPED BY) также являются необязательными, но пользователь должен указать по крайней мере один из них.

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl
  -> FIELDS TERMINATED BY ':'
  -> LINES TERMINATED BY '\r\n';

По умолчанию LOAD DATA вставляет данные в порядке столбцов файла данных, если порядок столбцов файла данных не совпадает с порядком столбцов таблицы,则需要 specify порядок столбцов.

Например, если порядок столбцов в файле данных a,b,c, а порядок столбцов в таблице вставки b,c,a, то синтаксис импорта данных будет следующим:

mysql> LOAD DATA LOCAL INFILE 'dump.txt' 
    -> INTO TABLE mytbl (b, c, a);

4、Импорт данных с помощью mysqlimport

Клиент mysqlimport предоставляет командную строковую интерфейс для LOAD DATA INFILEQL.

Чтобы импортировать данные из файла dump.txt в таблицу mytbl, можно использовать следующую команду:

$ mysqlimport -u root -p --local mytbl dump.txt
пароль *****

Команда mysqlimport может specify опции для установки формата, формат команды такой:

$ mysqlimport -u root -p --local --fields-terminated-by=":" \
   --lines-terminated-by="\r\n"  mytbl dump.txt
пароль *****

использование опции --columns в mysqlimport для установки порядка столбцов:

$ mysqlimport -u root -p --local --columns=b,c,a \
    mytbl dump.txt
пароль *****

Обзор常用的 mysqlimport опций

опцияфункция
-d или --deleteвсе данные перед导入新数据 в таблицу удаляются из таблицы.
-f или --forcemysqlimport продолжит вставку данных принудительно, независимо от того, встречаются ли ошибки.
-i или --ignoremysqlimport пропускает или игнорирует те, у которых есть идентичные уникальные              строки с ключевыми словами, данные из импортируемого файла будут пропущены.
-l или -lock-tablesТаблица блокируется перед вставкой данных, что предотвращает                Когда вы обновляете базу данных, запросы и обновления пользователей受到影响.
-r или -replaceЭтот параметр действует oppositely к параметру -i; этот параметр будет заменять                           В таблице есть записи с одинаковыми уникальными ключами.
--fields-enclosed-by= charSpecify, как данные в текстовом файле записываются в записи, часто                 Данные заключены в двойные кавычки. По умолчанию данные не заключены в кавычки.
--fields-terminated-by=charSpecify delimiter between the values of different data, in dot-separated files,                 Delimitor is dot. Вы можете использовать этот параметр для specification of delimiter between data.                 Default delimiter is tab.
--lines-terminated-by=strЭтот параметр specifies строку, которая используется для разделения данных в строках текстового файла.                или символа. По умолчанию mysqlimport использует newline в качестве разделителя строк.                Вы можете использовать строку для замены одного символа:                 Одна новая строка или один отступ.

Часто используемые параметры команды mysqlimport включают -v для отображения версии (version), -p для запроса пароля (password) и т.д.