SQL可以选择将数据转储到文件中,并使用into oft fot for Outfile选项进行exmaple

SELECT * from FIshReport INTO OUTFILE './FishyFile'

问题是,仅当文件之前不存在时,才允许此命令。它创建文件,然后输入数据。那么,有什么方法可以将数据附加到文件上?

有帮助吗?

解决方案

正如Select语法上的MySQL页面所建议:

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

替代方法是从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

其他提示

我认为MySQL由于安全原因而不允许将数据附加到现有文件或覆盖现有文件。解决的工作可能是在单独的文件中保存重新发行,然后附加使用文件IO。

您始终可以使用SQL脚本的输出将输出使用 >>

例如(对于Sybase):

isql < script.sql >> outputfile.out

我无法告诉您MySQL的等效物是什么,但是原理应该是相同的。

当然,输出都将全部转到一个文件,因此,如果您的SQL脚本输出各种SQL选择到不同的输出文件,则需要将脚本拆分。

您可以将其添加到变量中。然后将选择与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;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top