264
Приложение B
няется больше одного раза, перед каждым выполнением следует
удалить имеющийся файл.
Содержимое файла
emp_list_delim.txt
выглядит так:
1|Michael|Smith|20010622
2|Susan|Barker|20020912
3|Robert|Tyler|20000209
4|Susan|Hawthorne|20020424
...
16|Theresa|Markham|20010315
17|Beth|Fowler|20020629
18|Rick|Tulman|20021212
Кроме формата с разделителями «|» можно форматировать данные за
пятыми (
формат с разделителямизапятыми
,
commadelimited for
mat
). В этом случае следует задать
fields
terminated
by
','
. Однако если
записываемые в файл данные включают строки, применение запятых
в качестве разделителей полей может вызвать проблемы. Запятые
встречаются в строках намного чаще, чем символ «|». Рассмотрим сле
дующий запрос, записывающий число и две строки, разделенные за
пятыми, в файл
comma1.txt
:
mysql>
SELECT data.num, data.str1, data.str2
> INTO OUTFILE 'C:\\TEMP\\comma1.txt'
> FIELDS TERMINATED BY ','
> FROM
> (SELECT 1 num, 'This string has no commas' str1,
> 'This string, however, has two commas' str2) data;
Query OK, 1 row affected (0.04 sec)
Поскольку третий столбец выходного файла (
str2
) – строка, содержа
щая запятые, можно предположить, что у приложения, считывающе
го файл
comma1.txt
, возникнут проблемы при синтаксическом разборе
строк и распределении их по столбцам. Но сервер MySQL предпринял
специальные меры предосторожности для подобных ситуаций. Вот со
держимое файла
comma1.txt
:
1,This string has no commas,This string\, however\, has two commas
Как видите, запятые в третьем столбце экранированы обратным слэ
шем, размещенным перед ними. Если выполнить этот же запрос, но
использовать формат с разделителями «|», запятые
не
будут экраниро
ваны. Если хочется использовать в выходном файле другой символ эк
ранирования, например еще одну запятую, его можно задать с помо
щью подблока
fields
escaped
by
.
Кроме разделителей столбцов можно задавать символ, используемый
для разделения разных записей в файле данных. Если требуется, что
бы каждая запись в выходном файле была отделена не символом новой
строки, а какимто другим, можно воспользоваться подблоком
lines
:
mysql>
Достарыңызбен бөлісу: