MySQL.RU .:. Одобрено лучшими российскими программистами
Справочное руководство по MySQL4.8.7 mysqlimport, импорт данных из текстовых файлов
4.8.7 mysqlimport , импорт данных из текстовых файлов
Утилита mysqlimport обеспечивает интерфейс командной строки для
SQL-оператора LOAD DATA INFILE . Большинство параметров mysqlimport
полностью соответствует аналогичным параметрам для оператора LOAD DATA
INFILE . See section 6.4.9 Синтаксис оператора LOAD DATA INFILE .
Утилита mysqlimport вызывается следующим образом:
shell> mysqlimport [параметры] database textfile1 [textfile2 ...]
Для каждого текстового файла, указанного в командной строке, mysqlimport
удаляет расширение в каждом имени файла и использует его, чтобы
определить, в какую таблицу занести содержимое. Например, файлы с именами
`patient.txt', `patient.text' и `patient' должны быть все занесены в таблицу с
именем `patient'.
Утилита mysqlimport поддерживает следующие опции:
-c, --columns=...
-
Эта опция принимает в качестве аргумента список разделенных запятыми имен
полей. Данный список полей используется для создания соответствующей
команды
LOAD DATA INFILE , которая затем посылается в MySQL.
See section 6.4.9 Синтаксис оператора LOAD DATA INFILE .
-C, --compress
-
Использовать компрессию в связи между клиентом и сервером, если они оба
поддерживают сжатие.
-#, --debug[=option_string]
-
Отслеживать прохождение программы (для отладки).
-d, --delete
-
Удалить данные из таблицы перед импортированием текстового файла.
--fields-terminated-by=...
-
--fields-enclosed-by=...
-
--fields-optionally-enclosed-by=...
-
--fields-escaped-by=...
-
--lines-terminated-by=...
-
Эти опции аналогичны соответствующим операторам для
LOAD DATA INFILE .
See section 6.4.9 Синтаксис оператора LOAD DATA INFILE .
-f, --force
-
Игнорировать ошибки. Например, если таблица для текстового файла не
существует, продолжать обработку остающихся файлов. Без параметра
--force
утилита mysqlimport прекращает работу при отсутствии таблицы.
--help
-
Вывести справочную информацию и выйти из программы.
-h host_name, --host=host_name
-
Импортировать данные в MySQL-сервер на указанном хосте. Значение хоста по
умолчанию -
localhost .
-i, --ignore
-
См. описание для параметра
--replace .
-l, --lock-tables
-
Заблокировать все таблицы для записи перед обработкой любых текстовых
файлов. Это обеспечивает синхронизацию всех таблиц на сервере.
-L, --local
-
Читать входящие файлы из клиента. По умолчанию предполагается, что
текстовые файлы расположены на сервере при подсоединении к
localhost
(значение хоста по умолчанию).
-pyour_pass, --password[=your_pass]
-
Используемый пароль при подключении к серверу. Если аргумент
=your_pass не
введен, mysqlimport предложит ввести пароль.
-P port_num, --port=port_num
-
Номер порта TCP/IP, используемого для подсоединения к хосту (применяется
при подсоединении к хостам, отличным от
localhost , для которого
используются сокеты Unix).
-r, --replace
-
Опции
--replace и --ignore управляют обработкой поступающих на вход
записей, которые дублируют имеющиеся записи по значениям уникальных
ключей. Если задано значение --replace , новые строки заменяют существующие
с тем же самым значением уникального ключа. Если задано значение --ignore ,
входные строки, которые дублируют существующую строку по значению
уникального ключа, пропускаются. Если же ни одна из опций не задана, то
при обнаружении ключа-дубликата возникает ошибка и остаток текстового
файла игнорируется.
-s, --silent
-
Режим молчания. Выводить только сообщения об ошибках.
-S /path/to/socket, --socket=/path/to/socket
-
Файл сокета для подсоединения к
localhost (значение хоста по умолчанию).
-u user_name, --user=user_name
-
Имя пользователя MySQL-сервера, используемое при подсоединении к серверу.
Значением по умолчанию является имя для входа в Unix.
-v, --verbose
-
Расширенный режим вывода. Вывод более детальной информации о работе
программы.
-V, --version
-
Вывести информацию о версии и выйти из программы.
Ниже приведен пример листинга программы, использующей утилиту mysqlimport :
$ mysql --version
mysql Ver 9.33 Distrib 3.22.25, for pc-linux-gnu (i686)
$ uname -a
Linux xxx.com 2.2.5-15 #1 Mon Apr 19 22:21:09 EDT 1999 i586 unknown
$ mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
$ ed
a
100 Max Sydow
101 Count Dracula
.
w imptest.txt
32
q
$ od -c imptest.txt
0000000 1 0 0 \t M a x S y d o w \n 1 0
0000020 1 \t C o u n t D r a c u l a \n
0000040
$ mysqlimport --local test imptest.txt
test.imptest: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
$ mysql -e 'SELECT * FROM imptest' test
+------+---------------+
| id | n |
+------+---------------+
| 100 | Max Sydow |
| 101 | Count Dracula |
+------+---------------+
|