SELECT INTO OUTFILE
Синтаксис
SELECT ... INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
[export_options]
export_options:
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
Описание
SELECT INTO OUTFILE записывает результирующие строки в файл и позволяет использовать разделители столбцов и строк для указания конкретного формата вывода. По умолчанию разделители полей — табуляции (\t), а разделители строк — символы новой строки (\n).
Файл не должен существовать. Его нельзя перезаписать. Для выполнения этого оператора пользователю требуется привилегия FILE. Кроме того, MariaDB должна иметь разрешение на запись файлов в указанном месте. Если переменная среды secure_file_priv установлена в имя непустого каталога, файл можно записывать только в этот каталог.
Оператор LOAD DATA INFILE дополняет SELECT INTO OUTFILE.
Наборы символов
Оператор CHARACTER SET указывает набор символов, в котором должны быть записаны результаты. Без этого оператора преобразование не происходит (используется двоичный набор символов). В этом случае, если есть несколько наборов символов, вывод будет содержать их тоже, и перезагрузка может быть затруднена.
В случаях, когда у вас есть два сервера, использующих разные наборы символов, использование SELECT INTO OUTFILE для передачи данных с одного на другой может привести к непредвиденным результатам. Чтобы обеспечить правильную интерпретацию MariaDB последовательностей escape, используйте CHARACTER SET оператор как в операторе SELECT INTO OUTFILE , так и в последующем операторе LOAD DATA INFILE.
Пример
Следующий пример создаёт файл в формате CSV:
SELECT customer_id, firstname, surname from customer INTO OUTFILE '/exportdata/customers.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
Следующий синтаксис ANSI также поддерживается для простого SELECT без UNION
SELECT customer_id, firstname, surname INTO OUTFILE '/exportdata/customers.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM customers;
Если вы хотите использовать синтаксис ANSI с UNION или подобными конструкциями, вы должны использовать синтаксис:
SELECT * INTO OUTFILE "/tmp/skr3" FROM (SELECT * FROM t1 UNION SELECT * FROM t1);
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/select-into-outfile/