SQL可以选择使用INTO OUTFILE选项将数据转储到文件中,例如
SELECT * from FIshReport INTO OUTFILE './FishyFile'
问题是,只有当文件之前不存在时才允许此命令。它创建文件然后输入数据。 那么,有没有办法以这种方式将数据附加到文件中?
答案 0 :(得分:4)
由于SELECT语法的MySQL页面建议:
http://dev.mysql.com/doc/refman/5.0/en/select.html
替代方法是从MySQL客户端发出SELECT:
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命令发出:
答案 1 :(得分:1)
我认为MySQL出于安全原因不允许将数据附加到现有文件或覆盖现有文件。 解决方法可能是将resuts保存在单独的文件中,然后附加使用文件IO。
答案 2 :(得分:0)
您始终可以使用>>
例如(对于Sybase):
isql < script.sql >> outputfile.out
我不能告诉你MySQL的等价物是什么,但原则应该是一样的。
当然输出都将转到一个文件,所以如果你的SQL脚本输出各种SQL选择到不同的输出文件,那么你需要拆分脚本。
答案 3 :(得分:0)
您可以将其添加到变量中。然后使用SELECT with 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;