2011-01-20 54 views
7

SQL有数据转储到一个文件,使用INTO OUTFILE选项选项,〔实施例如何从SQL数据附加到现有文件

SELECT * from FIshReport INTO OUTFILE './FishyFile' 

问题是,该命令只有在允许的文件在它之前不存在。它创建文件,然后输入数据。 那么,有没有办法以这种方式将数据追加到文件?

+3

哪个数据库供应商是我们在这里谈论的? – 2011-01-20 13:22:15

+0

我正在使用MySql DB – 2011-01-20 13:24:48

回答

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命令:

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

0

你可以输出始终附加从SQL脚本使用文件>>

例如(用于Sybase):

isql <script.sql>> outputfile.out 

我不能告诉你的是相当于什么MySQL,但原则应该是一样的。

当然,输出将全部转到一个文件,所以如果您的SQL脚本正在输出各种SQL选择到不同的输出文件,那么您需要将脚本分开。

+0

,它并不真正起作用。我使用的是来自tcl脚本的MySql,因此无论何时发出命令,它都不会在屏幕上显示结果。但是,谢谢:) – 2011-01-20 13:31:11

1

我认为MySQL不允许将数据附加到现有的文件或覆盖出于安全原因,现有的文件。 解决办法可能是将分钟文件保存在单独的文件中,然后附加使用的文件IO。

0

您可以将其添加到变量。然后使用带有UNION的SELECT。

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; 
相关问题