Опубликован: 16.04.2007 | Доступ: свободный | Студентов: 5371 / 898 | Оценка: 4.18 / 4.08 | Длительность: 16:03:00
Лекция 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;
Александра Каева
Александра Каева
Дмитрий Черепенин
Дмитрий Черепенин

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