Пакетная обработка — это неинтерактивный способ запуска программ MySQL, и вы по-прежнему будете использовать те же команды, что и в MySQL. Пакетная обработка — это неинтерактивный способ запуска программ MySQL, и вы по-прежнему будете использовать те же команды, что и в MySQL.
Чтобы реализовать пакетную обработку, вы перенаправляете файл в программу MySQL. Сначала нам нужен текстовый файл. Этот текстовый файл содержит тот же текст, что и команда, которую мы ввели в MySQL.
Например, если мы хотим вставить некоторые данные, используйте файл, содержащий следующий текст (имя файла — New_Data.sql, конечно, мы также можем назвать его New_Data.txt или любое другое допустимое имя, и оно не обязательно должно заканчиваться с суффиксом sql):
ИСПОЛЬЗУЙТЕ Meet_A_Geek;
INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, «Блокировать»);
INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, «Ньютон»);
INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, «Симмонс»);
Обратите внимание, что приведенные выше предложения должны быть грамматически правильными, и каждое предложение должно заканчиваться точкой с запятой. Приведенная выше команда USE выбирает базу данных, а команда INSERT вставляет данные.
Далее нам необходимо импортировать указанный выше файл в базу данных. Перед импортом мы должны подтвердить, что база данных уже запущена, то есть процесс mysqld (или служба, называемая «сервис» в Windows NT, «процесс» в Unix). уже работает.
Затем выполните следующую команду:
bin/mysql –p </home/mark/New_Data.sql
Затем введите пароль в соответствии с запросом. Если в выражениях в приведенном выше файле нет ошибок, данные будут импортированы в базу данных.
Используйте LOAD DATA INFILE в командной строке, чтобы импортировать данные из файла в базу данных:
Теперь вы можете спросить себя: «С какой стати я записываю все эти операторы SQL в файл, а затем запускаю их через программу?»
Это может показаться большой работой. Что ж, возможно, вы правы, когда так думаете. Но что, если у вас есть записи журнала всех этих команд? Это здорово, ведь большинство баз данных автоматически генерируют журнал событий, записанных в базе данных. Большинство журналов содержат использованные оригинальные команды SQL. Поэтому, если вы не можете экспортировать данные из текущей базы данных в новую базу данных MySQL, вы можете использовать журнал и функции пакетной обработки MySQL, чтобы быстро и легко импортировать ваши данные. Конечно, это избавит вас от необходимости печатать.
ЗАГРУЗИТЬ ИНФАЙЛ ДАННЫХ
Это последний метод, который мы представим для импорта данных в базу данных MySQL. Эта команда очень похожа на mysqlimport, но этот метод можно использовать в командной строке MySQL. Это означает, что вы можете использовать эту команду во всех программах, использующих API. Используя этот метод, вы можете импортировать данные, которые хотите импортировать, в свое приложение.
Перед использованием этой команды должен быть запущен процесс (служба) mysqld.
Запустите командную строку MySQL:
бин/mysql –p
Введите пароль в соответствии с запросом. После успешного ввода командной строки MySQL введите следующую команду:
ИСПОЛЬЗУЙТЕ Meet_A_Geek;
ЗАГРУЗИТЬ ИНФАЙЛ ДАННЫХ "/home/mark/data.sql" В ТАБЛИЦУ Заказы;
Проще говоря, это импортирует содержимое файла data.sql в таблицу Orders. Как и инструмент mysqlimport, эта команда также имеет некоторые дополнительные параметры. Например, если вам нужно импортировать данные с вашего компьютера на удаленный сервер базы данных, вы можете использовать следующую команду:
ЗАГРУЗИТЬ ЛОКАЛЬНЫЙ ИНФАЙЛ ДАННЫХ "C:MyDocsSQL.txt" В TABLE Orders;
Параметр LOCAL выше указывает, что файл является локальным, а сервером является сервер, на котором вы вошли. Это устраняет необходимость использования FTP для загрузки файлов на сервер, MySQL сделает это за вас.
Вы также можете установить приоритет оператора вставки. Если вы хотите пометить его как низкий приоритет (LOW_PRIORITY), MySQL будет ждать, пока никто другой не прочитает таблицу, прежде чем вставлять данные. Вы можете использовать следующие команды:
ЗАГРУЗИТЬ ДАННЫЕ LOW_PRIORITY INFILE "/home/mark/data.sql" INTO TABLE Orders;
Вы также можете указать, следует ли заменять или игнорировать повторяющиеся значения ключей в файлах и таблицах при вставке данных. Синтаксис для замены повторяющихся значений ключей:
ЗАГРУЗИТЬ ДАННЫЕ LOW_PRIORITY INFILE "/home/mark/data.sql" ЗАМЕНИТЬ В ТАБЛИЦУ Заказы;
Приведенное выше предложение может показаться немного неуклюжим, но оно помещает ключевые слова в такое место, которое может понять ваш профайлер.
Следующая пара параметров описывает формат записи файла. Эти параметры также доступны в инструменте mysqlimport. Здесь они выглядят немного иначе. Во-первых, необходимо использовать ключевое слово FIELDS. Если используется это ключевое слово, профилировщик MySQL надеется увидеть хотя бы одну из следующих опций:
ПРЕКРАЩЕНО персонажем
ЗАКРЫТО ПЕРСОНАЖЕМ
Сбежал по персонажу
Эти ключевые слова и их параметры используются так же, как и в mysqlimport.
TERMINATED BY описывает символ-разделитель поля, который по умолчанию является символом табуляции (t).
ENCLOSED BY описывает символы скобок поля. Например, заключите каждое поле в кавычки.
Эскейп-персонаж, описанный ESCAPED BY. По умолчанию используется обратная косая черта: ).
Следующий пример по-прежнему использует предыдущий пример команды mysqlimport и использует оператор LOAD DATA INFILE для импорта того же файла в базу данных:
ЗАГРУЗИТЬ ИНФАЙЛ ДАННЫХ "/home/mark/Orders.txt" ЗАМЕНИТЬ В ТАБЛИЦУ ПОЛЯ Заказов, ЗАВЕРШЕННЫЕ ',' ЗАКРЫТЫМИ '"';
В операторе LOAD DATA INFILE есть функция, недоступная в инструменте mysqlimport:
LOAD DATA INFILE может импортировать файлы в базу данных по указанным столбцам.
Эта функция очень важна, когда мы хотим импортировать часть данных. Например, когда мы обновляем базу данных Access до базы данных MySQL, нам необходимо добавить некоторые столбцы (столбцы/поля/поля) в базу данных MySQL, чтобы удовлетворить некоторые дополнительные потребности.
В настоящее время данные в нашей базе данных Access все еще доступны, но поскольку поля этих данных больше не соответствуют полям в MySQL, инструмент mysqlimport больше нельзя использовать. Тем не менее, мы все равно можем использовать LOAD DATA INFILE. В следующем примере показано, как импортировать данные в указанное поле:
ЗАГРУЗИТЬ ИНФАЙЛ ДАННЫХ "/home/Order.txt" В ТАБЛИЦУ Orders(Order_Number, Order_Date, Customer_ID);
Как видите, мы можем указать обязательные поля. Эти указанные поля по-прежнему заключены в круглые скобки и разделены запятыми. Если вы пропустите какое-либо из них, MySQL напомнит вам об этом.