Сценарии и утилиты MySQL
mysqlimport, импорт данных из текстовых файлов
Утилита mysqlimport обеспечивает интерфейс командной строки для SQL-оператора LOAD DATA INFILE. Большинство параметров mysqlimport полностью соответствует аналогичным параметрам для оператора LOAD DATA INFILE.
Утилита mysqlimport вызывается следующим образом:
shell> mysqlimport [параметры] database textfile1 [textfile2 ...]
Для каждого текстового файла, указанного в командной строке, mysqlimport удаляет расширение в каждом имени файла и использует его, чтобы определить, в какую таблицу занести содержимое. Например, файлы с именами patient.txt, patient.text и patient должны быть все занесены в таблицу с именем patient.
Утилита mysqlimport поддерживает следующие опции:
-
-c, -columns=...
Эта опция принимает в качестве аргумента список разделенных запятыми имен полей. Данный список полей используется для создания соответствующей команды LOAD DATA INFILE, которая затем посылается в MySQL.
-
-C, -compress
Использовать компрессию в связи между клиентом и сервером, если они оба поддерживают сжатие.
-
-#, -debug[=option_string]
Отслеживать прохождение программы (для отладки).
-
-d, -delete
Удалить данные из таблицы перед импортированием текстового файла.
-
-f, -force
Игнорировать ошибки. Например, если таблица для текстового файла не существует, продолжать обработку остающихся файлов. Без параметра -force утилита mysqlimport прекращает работу при отсутствии таблицы.
-
-h host_name, -host=host_name
Импортировать данные в MySQL-сервер на указанном хосте. Значение хоста по умолчанию — localhost.
-
-l, -lock-tables
Заблокировать все таблицы для записи перед обработкой любых текстовых файлов. Это обеспечивает синхронизацию всех таблиц на сервере.
-
-L, -local
Читать входящие файлы из клиента. По умолчанию предполагается, что текстовые файлы расположены на сервере при подсоединении к localhost (значение хоста по умолчанию).
-
-pyour_pass, -password[=your_pass]
Используемый пароль при подключении к серверу. Если аргумент =your_pass не введен, mysqlimport предложит ввести пароль.
-
-P port_num, -port=port_num
Номер порта TCP/IP, используемого для подсоединения к хосту.
-
-r, -replace
Опции -replace и -ignore управляют обработкой поступающих на вход записей, которые дублируют имеющиеся записи по значениям уникальных ключей. Если задано значение -replace, новые строки заменяют существующие с тем же самым значением уникального ключа. Если задано значение -ignore, входные строки, которые дублируют существующую строку по значению уникального ключа, пропускаются. Если же ни одна из опций не задана, то при обнаружении ключа-дубликата возникает ошибка и остаток текстового файла игнорируется.
-
-s, -silent
Режим молчания. Выводить только сообщения об ошибках.
-
-u user_name, -user=user_name
Имя пользователя MySQL-сервера, используемое при подсоединении к серверу. Значением по умолчанию является имя для входа в Unix.
mysqlshow, просмотр баз данных, таблиц и столбцов
Утилита mysqlshow позволяет кратко ознакомиться с существующими базами данных, их таблицами и столбцами таблиц.
Аналогичную информацию можно получить с помощью программы mysql, используя команду SHOW.
Утилита mysqlshow вызывается следующим образом:
shell> mysqlshow [ПАРАМЕТРЫ] [database [table [column]]]
- Если имя базы данных не указано, то выдается список всех существующих баз данных.
- Если не указана таблица — показываются все таблицы, найденные в этой базе данных.
- Если не задан столбец — показываются все найденные в таблице столбцы и представленные в виде столбцов данные.
Следует отметить, что в более новых версиях MySQL пользователь может просмотреть только те базы/таблицы/столбцы, для которых у него имеются соответствующие привилегии.
Если последний аргумент содержит в себе шаблонные символы ( *, ?, % или _ ) процессора или SQL, то будут представлены только данные, совпадающие с шаблоном. Если имя базы данных содержит подчеркивание, то оно должно быть экранировано обратным слешем (некоторые оболочки в Unix востребуют два обратных слеша) для того, чтобы получить корректные имена. '*' конвертируются в '%' и '?' - в '_'.
Это может вызвать путаницу при попытке просмотреть столбцы таблицы с символом _, так как в таком случае mysqlshow покажет только имена таблиц, совпадающие с шаблоном. Ситуацию можно легко исправить добавлением дополнительного символа % в конец командной строки (как отдельного аргумента).
perror, разъяснение кодов ошибок
Для большинства системных ошибок, помимо внутреннего текстового сообщения MySQL, можно также выводить номер кода системной ошибки в одном из следующих стилей: message ... (errno: #) или message ... (Errcode: #).
Выяснить, что данный код ошибки означает, можно либо путем изучения документации на данную систему, либо воспользовавшись возможностями утилиты perror.
perror выводит описание кода системной ошибки или код ошибки обработчика таблиц MyISAM/ISAM.
perror вызывается следующим образом:
shell> perror [ПАРАМЕТРЫ] [ERRORCODE [ERRORCODE...]]
Пример:
shell> perror 13 64 Error code 13: Доступ запрещен Error code 64: Компьютер не находится в сети
Следует учитывать, что сообщения об ошибках в большинстве своем являются системно-зависимыми!
Запуск SQL-команд из текстового файла
Обычно клиент mysql используется в интерактивном режиме, например, следующим образом:
shell> mysql database
Однако вполне можно поместить SQL команды в текстовый файл и указать mysql считывать входные данные из этого файла. Для этого необходимо создать текстовый файл text_file, содержащий команды, которые предстоит выполнить. Затем запускаем mysql как показано ниже:
shell> mysql database < text_file
Можно также запустить текстовый файл с командой USE db_name. В этом случае указывать имя базы данных в командной строке не обязательно:
shell> mysql < text_file
Если программа mysql уже работает, можно запустить файл с SQL-сценарием, используя команду source:
mysql> source filename;