如何将数据从SQL附加到现有文件
-
13-10-2019 - |
题
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命令:
其他提示
我认为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;
不隶属于 StackOverflow