尝试对输出文件名进行日期戳记 - 但不断出现错误 - 按照以下方式:
Select * from Orders
output to 'c:'+ select (CONVERT(varchar(10), GETDATE(), 120)) + 'orders.csv'
任何帮助表示赞赏...
答案 0 :(得分:3)
我在Sybase 9上有类似的问题 - 我必须在名为该过程的spearate文件中编写每个过程/函数体。所以我不得不使用每个过程(或函数)的名称动态创建文件名。下面是我的解决方案(适用于isql):
begin
declare folder varchar (40);
declare fileName varchar(60);
-- folder parameter is our destination path - the 4 backslashes are important here
set folder = 'c:\\\\test\\\\sql\\\\';
-- here we are iterating over all procedures / functions
for p as curs dynamic scroll cursor for
Select distinct sysobjects.name
from sysobjects inner join syscomments
on sysobjects.id = syscomments.id where sysobjects.type = 'P'
do
-- each procedure must be inside separate file named like that procedure
set fileName = folder + name + '.sql';
-- finally, there are answer to original question:
-- we are exporting data into file, whose name is defined dynamically
unload select proc_defn from SYS.SYSPROCEDURE where proc_name = name
to fileName escapes off;
end for;
end
答案 1 :(得分:2)
output to
是一个dbisql命令,因此它在客户端上进行了解释。这意味着您不能使用表达式作为文件名,因为它们是在服务器上执行的。但是,您可以使用unload select
语句(在服务器上运行)和into client file
子句来执行您想要的操作。
请参阅unload select
声明here上的文档。
免责声明:我在SQL Anywhere工程中为Sybase工作。