我正在尝试使用iSQL客户端查询Sybase ASA 8数据库,并将查询结果导出为CSV格式的文本文件。但是,列标题不会导出到该文件。在iSQL设置和OUTPUT语句中都没有特殊选项来指定它。
查询和输出语句如下所示:
SELECT * FROM SomeTable;
OUTPUT TO 'C:\temp\sometable.csv' FORMAT ASCII DELIMITED BY ';' QUOTE ''
结果是像
这样的文件1;Miller;Steve;1980-06-28
2;Jones;Martha;1965-11-02
3;Waters;Richard;1979-10-15
虽然我想
ID;LASTNAME;FIRSTNAME;DOB
1;Miller;Steve;1980-06-28
2;Jones;Martha;1965-11-02
3;Waters;Richard;1979-10-15
任何提示?
答案 0 :(得分:9)
我建议从另一个声明开始:
SELECT 'ID;LASTNAME;FIRSTNAME;DOB' FROM dummy;
OUTPUT TO 'C:\\temp\\sometable.csv' FORMAT ASCII DELIMITED BY ';' QUOTE '';
并在您的查询中添加APPEND
选项...但我无法让APPEND
工作(但我使用的是ASA 11引擎)。
答案 1 :(得分:7)
试试这个
SELECT 'ID','LASTNAME','FIRSTNAME','DOB' union
SELECT string(ID),LASTNAME,FIRSTNAME,DOB FROM SomeTable;
OUTPUT TO 'C:\\temp\\sometable.csv' FORMAT ASCII DELIMITED BY ';' QUOTE '';
答案 2 :(得分:3)
只需添加选项
即可WITH COLUMN NAMES
到你的语句中,它会添加一个带有列名的标题行。
完整的陈述是:
SELECT * FROM SomeTable; OUTPUT TO 'C:\temp\sometable.csv' FORMAT ASCII DELIMITED BY ';' QUOTE '' WITH COLUMN NAMES
答案 3 :(得分:1)
奥利弗,
如果使用“FORMAT EXCEL”选项,它将在第一行输出列名称的行。然后,一旦你将它变成excel,你可以根据需要将其保存为另一种格式。
SELECT * FROM SOMETABLE;
OUTPUT TO 'C:\temp\sometable.xls' FORMAT EXCEL DELIMITED BY ';' QUOTE ''
希望这有帮助。
杰布吉布森答案 4 :(得分:1)
您已熟悉OUTPUT选项。没有选项可以满足您的需求。
好的,问题是接收端不接受标准的CSV文件,它需要分号。
如果您正在编写脚本,那么最好以最接近您需要的格式获取输出,然后输出文件。非常快,你可以改变你需要的任何东西。我认为您最好的选择是ASCII或默认输出格式,它将在ASCII字符文本文件中提供逗号(非冒号)分隔值,并包括列标题。然后使用单个awk命令将逗号转换为分号。
答案 5 :(得分:1)
isql -S<Server> -D<Database>-U<UserName> -s \; -P<password>\$\1 -w 10000 -iname.sql > output.csv
答案 6 :(得分:0)
找到一个更简单的解决方案,将标题放在一个文件中,如header.txt(它将包含一行“col_1 | col_2 | col_3”)然后将头文件和输出文件组合运行:
cat header.txt my_table.txt > my_table_wth_head.txt
答案 7 :(得分:0)
我可以使用isql
命令输出引用的CSV。
$ isql $DATABASE $USERNAME $PASSWORD -b -d, -q -c
select username, fullname from users
给出了结果:
username,fullname
"jdoe","Jane Doe"
"msmith","Mark Smith"
-b
:以非交互式批处理模式运行isql。在这种模式下,isql处理其标准输入,期望每行一个SQL命令。
-dDELIMITER
:使用分隔符分隔列。
-c
:输出第一行的列名。仅对-d或-x选项有效。
-q
:用双引号括起字符字段。
但是,如果查询结果包含双引号,则可能会遇到问题。引号未正确转义,因此会导致无效的CSV:
> select 'string","with"quotes' as quoted_string
quoted_string
"string","with"quotes"