ТОП-10 популярных


НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...


Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...

Internet2, или cтарые песни о новом
Когда-то на заре Интернета, тогдаеще военно-научной сетиAPRAnet, были заложены основныепринципы функционирования«Сети сетей». В их числе — использованиепротокола, называемого сейчасIPv4. В...

Все о MySQL. Экспорт записей


28-12-2009

Аналогично тому, как данные импортируются из файла командой LOAD DATA INFILE, можно записи таблицы скопировать обратно в файл. Для этого предназначается конструкция SELECT...INTO OUTFILE. Эта конструкция позволит сделать все, что делается с помощью обычного оператора SELECT, а затем отправить полученный набор записей обратно в файл.

Дилемма ограничителей
Как команда LOAD DATA INFILE, так и команда SELECT...INTO OUTFILE под­держивают использование дополнительных ключевых слов и предложений, предназначенных для определения формата файла данных.
• Предложение LINES TERMINATED BY задает ограничитель конца записи (по умолчанию - это символ перехода на новую строку "n").
• Предложение FIELDS задает ограничитель поля, а за ним может следовать одно (или более) ключевое слово TERMINATED BY, ESCAPED BY или ENCLOSED BY. Эти ключевые слова задают ограничитель конца поля (по умолчанию это символ табуляции "t"), последовательность специальных символов при чтении и записи значений (по умолчанию это символ "") и символ, в который заключаются поля (значение по умолчанию отсутствует), соответственно.
Экспорт записей
Следующая команда копирует все эти записи в текстовый файл accounts.txt, рас­положенный на сервере.
Листинг 9.74.
mysql> SELECT accountName, accountBalance FROM accounts INTO OUTFILE
'accounts.txt';
Query OK, 11 rows affected (0.06 sec) Получаем следующий результат.
Экспорт записей
Sue U 388883.13 Jacob N 18410.00
Очевидно, что здесь можно использовать предложение WHERE (или любое другое предложение или ключевое слово, допустимое по синтаксису оператора SELECT) для еще большей детализации полученной выборки. В следующем примере продемонстрирована выборка в файл /tmp/high-value-accounts.txt только таких записей, в которых остаток на счету превышает 5 тыс. долл.
Листинг 9.76.
mysql> SELECT accountNumber, accountName, accountBalance FROM accounts WHERE accountBalance > 50000 INTO OUTFILE '/tmp/high-value-accounts.txt'
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY 'rn';
Query OK, 5 rows affected (0.00 sec)
А вот и результат:
Листинг 9.77.
"2147483647", "Timothy J","56347.50"
"5739304575", "Harish K","996 564.88"
"2173467271", "Kingston X", "634238.00"
"2384371001", "Anil V", "72460.00"
"2388282010", "Sue U","388883.13"
Файл, заданный в предложениях INTO OUTFILE и INTO DUMPFILE, будет записан в файловую систему сервера и не должен уже существовать. Так как файл будет записываться пользователем сервера MySQL, этот пользователь должен обладать правом на запись файлов в указанный каталог. Исходя из соображений безопасности, MySQL не разрешает записывать выводной файл в клиентскую файловую систему с применением этого метода. Поэтому клиентское приложение должно выбирать их с сервера с помощью других методов.

Выгружено!
Для выборки двоичных данных (содержимого полей типа BLOB, например) из базы данных в файл, предложение INTO OUTFILE нужно заменить предложением INTO DUMPFILE. Это позволит производить запись данных в файл как одной строки (без символов завершения записей и полей), не допуская тем самым разрушения двоичных данных.

Рядовые
Зарегистрировавшийся пользователь должен обладать привилегией FILE на сервере для того, чтобы иметь возможность выполнения команд SELECT...INTO OUTFILE и LOAD DATA INFILE. В главе 14, "Безопасность, управление доступом и привилегии", подробнее рассказывается о том, как работает система привилегий MySQL.
Как и с командой LOAD DATA INFILE, здесь можно задать ограничители полей и записей выгружаемых данных (см. врезку "Дилемма ограничителей"). Это показано в следующих примерах: 
mysql> SELECT name, phone, email, fax FROM members INTO OUTFILE '/usr/local/data/members.txt' FIELDS TERMINATED BY ■|" ENCLOSED BY '"' ESCAPED BY 'W;
Query OK, 32 rows affected (0.00 sec)
mysql> SELECT title, author, isbn FROM books INTO OUTFILE '/home/me/books.asc' FIELDS TERMINATED BY',' LINES TERMINATED BY ■rn-;
Query OK, 255 rows affected (0.17 sec)
Для выгрузки содержимого всей базы данных или одной таблицы можно воспользоваться возможностями утилиты mysqldump. Подробнее об использовании этой утилиты для резервирования и восстановления ваших баз данных MySQL можно узнать в главе 15, "Обслуживание, резервное копирование и восстановление".

Резюме
В этой главе более подробно описаны команды манипулирования данными, которыми располагает язык SQL (вместе с некоторыми нестандартными командами, присущими только диалекту MySQL). Это такие команды, как:
■ INSERT - используется для добавления записей в таблицы;
■ UPDATE - используется для обновления уже существующих записей;
■ REPLACE - используется для замены существующих записей;
■ DELETE и TRUNCATE - используются для удаления записей;
■ SELECT (и ее различные варианты) -используется для выборки наборов данных, удовлетворяющих определенному критерию;
■ LOAD DATA INFILE - используется для импортирования данных из текстовых файлов в таблицы MySQL.
Итак, у вас уже должно быть сформировано более глубокое понимание того, как взаимодействуют между собой различные команды SQL и как они взаимодействуют с приложениями. Дальнейший процесс ознакомления читателя с новыми и более совершенными возможностями MySQL (включая подзапросы, транзакции и оптимизацию запросов) базируется на материале, изложенном в этой и во всех предыдущих главах.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
Все о MySQL. Копирование, импорт и экспорт записей Все о MySQL. Объединения