Пакетная загрузка данных
Для пакетной загрузки данных из текстового файла в таблицу в СУБД MySQL предназначен специальный оператор load data. Данный оператор работает быстрее, чем оператор insert, т. к. СУБД не требуется дополнительного времени на анализ синтаксиса оператора. Оператор имеет следующий синтаксис:
LOAD DATA [LOCAL] INFILE 'filename' INTO TABLE tbl
Если задано необязательное ключевое слово local, to файл читается с клиентского хоста. Если же local не указывается, то файл должен находиться на сервере.
Поля базы данных должны быть разделены символом табуляции. Тогда выполнение запроса, представленного в листинге 6.17, приводит к заполнению базы таблицы catalogs.
Перед конструкцией into table можно разместить одно из двух ключевых слов, которые управляют обработкой ситуации, когда данные из текстового файла дублируют : значения первичного или уникальных ключей:
Загрузка данных при помощи оператора load data без использования ключевых слов I shore и replace приведет к сообщению об ошибке (листинг 6.18). Однако использование оператора replace приводит к полной замене содержимого таблицы catalogs.
Ключевое слово ignore number lines позволяет задать количество number строк, которые необходимо пропустить от начала файла. Эта конструкция используется для того, чтобы пропустить заголовки столбцов, часто располагаемых на первой строке текстового файла (листинг 6.19).
Кроме базового синтаксиса, оператор load data допускает дополнительные опции, позволяющие задать формат файла данных. Это осуществляется при помощи следующих ключевых слов:
Ключевое слово lines позволяет задать символ начала и конца строки при помощи конструкций starting by и terminated by соответственно. Так, по умолчанию строка в текстовом файле должна заканчиваться символом перевода строки \п. Однако при создании текстовых файлов в среде Windows строка заканчивается двумя символами \г\п, что может приводить к неправильной интерпретации файла данных и потере информации. При помощи конструкции terminated by можно переопределить символ конца строки. Представленный в листинге 6.20 SQL-запрос при использовании его в операционной системе Windows может выглядеть следующим образом.
По умолчанию в качестве начальной строки задается пустая строка, таким образом, запросы в листинге 6.21 идентичны.
Ключевое слово fields позволяет задать порядок обработки полей, совместно с ним применяются следующие конструкции:
Запросы, представленные в листинге 6.22, идентичны.
Пусть формат текстового файла данных таков, что поля разделены запятыми, значения обрамлены двойными кавычками, а строки заканчиваются символом \r\n (Windows стиль).
Тогда запрос, загружающий данные из такого файла, может выглядеть так, как это представлено в листинге 6.23.
Удаление данных
Время от времени возникает задача удаления записей из базы данных, например, комплектующие могут устаревать и быть снятыми с производства. Для того чтобы отразить этот факт в учебной базе данных, необходимо удалить соответствующую запись в таблице products.
Для удаления записей из таблиц предусмотрено два оператора:
- DELETE
- TRUNCATE TABLE
Оператор DELETE
Оператор delete имеет следующий синтаксис:
DELETE FROM tbl
WHERE where_definition
Order by ...
LIMIT rows
Оператор удаляет из таблицы tbl записи, удовлетворяющие условию where_definition. В листинге 8.1 из таблицы catalogs удаляются записи, имеющие значение первичного ключа id_catalog больше двух.
Дата добавления: 2020-11-18; просмотров: 453;