Опубликован: 16.04.2007 | Уровень: специалист | Доступ: платный
Лекция 5:

Сценарии и утилиты 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;
Александра Каева
Александра Каева
Дмитрий Черепенин
Дмитрий Черепенин

Какого года данный курс?

Анна Елисеева
Анна Елисеева
Россия, Великий Новгород, Ногородский государственный университет имени Ярослава Мудрого, 2003
Эмиль Фернандо
Эмиль Фернандо
Россия