|
Программирование >> Создание клиентов mysql
Полный список инструкций 229 INSERT IGNORE INTO team (Name) SELECT Name FROM oidteam o, activelist a WHERE o.ID = a.Team AND a.Active=Y KILL Инструкция KILL разрывает соединение с базой данных. Ей передается идентификатор потока: KILL поток Все потоки пронумерованы. Инструкция SHOW PROCESSLIST отображает список активных потоков. Обычно пользователь имеет право уничтожать только свои собственные потоки, но с помощью привилегии PROCESS ему можно разрешить удалять любые потоки. LOCKTABLES С помощью инструкции LOCK TABLES можно запретить другим потокам осуществлять запись в ту или иную таблицу. Синтаксис инструкции таков: LOCK TABLES таблица [AS псевдоним] {READ [LOCAL] [LOW PRIORITY] WRITE} [, таблица [AS псевдоним EAD [LOCAL] [LOW PRIORITY]WRITE} . . .] Инструкция LOCK TABLE ожидает бесконечно долго, пока требуемые блокировки не будут получены. В ней указывается список имен таблиц, разделенных запятыми. После каждого имени задается тип блокировки: READ (нежесткая) или WRITE (жесткая). Нежесткая блокировка запрещает запись в таблицу всем потокам, включая тот, кому она принадлежит. Жесткая блокировка разрешает доступ к таблице для чтения и записи только потоку-владельцу. В листинге 13.32 показан пример блокирования двух таблиц. Из таблицы team извлекается максимальное значение поля Score, которое заносится в переменную @тах. Далее это значение вставляется в таблицу record, после чего обе таблицы разблокируются. LOCK TABLES team t READ, record r WRITE; SELECT @max:=MAX(Score) FROIM team t; INSERT INTO record VALUES (NOW(), @max); UNLOCK TABLES; Для таблицы может быть задан псевдоним, и пока блокировка не снята, таблице нельзя назначать в запросах другие псевдонимы. Если таблица участвует в запросе под несколькими псевдонимами, ее придется заблокировать определенное число раз под соответствующими именами. Флаг LOCAL разрешает выполнять инструкции INSERT, не приводящие к конфликтам. Но в этом случае файлы, содержащие табличные данные, становятся доступными для записи, из-за чего появляется угроза нарушения целостности данных. Флаг LOW PRIORITY делает приоритет запросов на получение жестких блокировок более низким, чем у запросов на получение нежестких блокировок. В этом случае жесткая блокировка будет предоставлена только тогда, когда нет отложенных нежестких блокировок. Обычно же запросы первого типа имеют более высокий приоритет. Для снятия блокировок предназначена инструкция UNLOCK TABLES. Кроме того, блокировки снимаются при завершении потока или вводе другой инструкции LOCK TABLES. Подробнее о блокировках рассказывалось в главе 9, Транзакции и параллельные вычисления . С блокировками связаны также функции GET LOCK) и RELEASELOCK ), описанные в главе 12, Встроенные функции . LOAD DATA INFILE Инструкция LOAD DATA INFILE читает данные из текстового файла и вставляет их в указанную таблицу. Ниже показан общий формат этойинструкции: LOAD DAT RIORITY] [LOCAL] INFILE путь [IGNORE REPLACE] INTO TABLE таблица [FIELDS [TERMINATED BY разделитель] [ [OPTIONALLY] ENCLOSED BY ограждаю1Ций символ] [ESCAPED BY управляю1щлй символ] ] [LINES TERMINATED BY признак конца строки] [IGNORE число строк LINES] [(столбец, .. .)] Флаг говорит о том, что процесс импорта данных должен быть от- ложен, пока не завершатся все операции чтения таблицы. Если отсутствует флаг LOCAL, файл открывается на сервере, в противном случае - в клиентской файловой системе. Для открытия файла на сервере следует иметь привилегию FILE. Обычно необходимо указывать полное путевое имя файла. Неполные путевые имена вычисляются относительно каталога данных MySQL. Как правило, это каталог Файл, не имеющий путевого имени, открывается в каталоге базы данных, которая задана по умолчанию, например В случае импорта записей, нарушающих целостность первичного ключа или ограничение уникальности, будут выдаваться сообщения об ошибке, подавляемые при личии флага IGNORE или REPLACE. Флаг IGNORE приводит к отбрасыванию неправильных записей, а флаг REPLACE означает замену существующих записей. Флаг LOCAL подразумевает наличие флага IGNORE, поскольку сервер не может запретить клиенту посылать данные. В листинге 13.33 демонстрируется загрузка содержимого файл tearns . txt в таблицу team. Полный список инструкций 231 LOAD DATA INFILE /tmp/teams.txt INTO TABLE team FIELDS TERMINATED BY \t OPTIONALLY ENCLOSED BY ESCAPED BY W LINES TERMINATED BY \г\п IGNORE 1 LINES (Name, ID) По умолчанию программа MySQL ожидает, что поля файла разделяются символами табуляции, а специальные символы защищаются от интерпретации с помощью обратной косой черты. Предложение FIELDS позволяет изменять эти установки. В спецификации TERMINATED BY указывается разделитель полей. Спецификация ENCLOSED BY задает символ (обычно кавычку), который используется для дополнительного обособления значений. Фла ANALLY не играет никакой роли. Спецификация ESCAPED BY задает символ, который будет отменять специальное назначение управляющих символов. Ограждающие символа: разрешается просто удваивать. Например, если все поля файла заключаются в двойные кавычки, то для вставки кавычки в поле можно записать либо что одно и то же. Каждое поле входного файла считается строкой. Строки легко преобразуются в числа, но если тип столбца задан как ENUM или SET, то такое преобразование не будет правильным. Следовательно, элементы перечислений и множеств должны иметь строковый тип. По умолчанию строки заканчиваются символом новой строки, выбор которого диктуется операционной системой. В UNIX это символ перевода строки. С помощью спецификации LINES TERMINATED BY можно задать другой конечный символ. Если в спецификации LINES TERMINATED BY указана пустая строка, а в спецификации FIELDS TERMINATED будет означать конец строки. Если требуется импортировать файл с полями фиксированного размера, нужно задать разделители полей и строк пустыми. В этом режиме предполагается, что размеры полей соответствуют спецификациям столбцов, а сами поля никак не отделяются друг от друга. Например, для столбца типа CHA 8) будут запрошены ближайшие 8 символов файла. Этот режим не подходит для столбцов типа TEXT и BLOB, а также для файлов, содержащих многобайтовые символы. С помощью предложение ШОКЕ, ЫЫЕЗ можно пропустить требуемое число строк файла. Это позволяет импортировать файлы, содержащие заголовки данных. Если данные загружаются лишь в некоторые столбцы, то в конце инструкции должен быть задан список столбцов. Он необходим также в том случае, когда порядок полей входного файла не соответствует порядку столбцов таблицы. Пропущенным столбцам будут присвоены стандартные значения. По умолчанию значения NULL записываются как \N. Если используются ограничивающие кавычки, то значения NULL вводятся в явном виде, причем без кавычек (с кавычками это будет воспринято как строка To же самое справедливо и для случая, когда управляющий символ незадан. Инструкция SELECT позволяет записывать табличные данные в файл. Для этого в ней предусмотрено предложение INTO.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |