Как добавить данные из SQL в существующий файл - PullRequest
7 голосов
/ 20 января 2011

SQL имеет опцию выгрузки данных в файл, используя опцию INTO OUTFILE, например,

SELECT * from FIshReport INTO OUTFILE './FishyFile'

Проблема в том, что эта команда разрешена, только если файл до этого не существовал.Он создает файл и затем вводит данные.Итак, есть ли способ добавить данные в файл таким образом?

Ответы [ 4 ]

4 голосов
/ 20 января 2011

Как показывает страница MySQL о синтаксисе SELECT:

http://dev.mysql.com/doc/refman/5.0/en/select.html

альтернативой этому является выдача SELECT из клиента MySQL:

However, if the MySQL client software is installed on the remote machine,
you can instead use a client command such as mysql -e "SELECT ..." > file_name 
to generate the file on the client host. 

который, в вашем случае, будет изменен на:

mysql -e "SELECT * from FishReport" >> file_name

, так что вы просто добавите файл.

Из вашего сценария Tcl вы можете просто выполнить это как команду exec:

http://www.tcl.tk/man/tcl/tutorial/Tcl26.html

1 голос
/ 20 января 2011

Я думаю, что MySQL не позволяет добавлять данные в существующий файл или перезаписывать существующий файл по соображениям безопасности. Обходным путем может быть сохранение результатов в отдельных файлах и добавление файла ввода-вывода.

0 голосов
/ 12 января 2012

Вы можете просто добавить его в переменную. Затем используйте SELECT с UNION.

declare t varchar(100);

set @myvar = concat('
    select *  INTO OUTFILE \'',file,'\'
    from (
       select \'',t,'\'
       union all
       SELECT col from tbl where x      
    ) a' 
);
PREPARE stmt1 FROM @myvar;
EXECUTE stmt1;
Deallocate prepare stmt1;
0 голосов
/ 20 января 2011

Вы всегда можете добавить вывод из вашего сценария SQL в файл, используя >>

Например (для Sybase):

isql < script.sql >> outputfile.out

Я не могу сказать вам, чтоэквивалентен для MySQL, но принцип должен быть таким же.

Конечно, все выходные данные будут идти в один файл, поэтому, если ваш SQL-скрипт выводит различные SQL-запросы в разные выходные файлы, вам нужно разделить скрипт.до.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...