我想将数据从db2表导出到csv格式。我还需要第一行应该是所有列名。
使用以下命令我没什么成功
EXPORT TO "TEST.csv"
OF DEL
MODIFIED BY NOCHARDEL coldel: ,
SELECT col1,'COL1',x'0A',col2,'COL2',x'0A'
FROM TEST_TABLE;
但是我得到了像
这样的数据Row1 Value:COL1:
Row1 Value:COL2:
Row2 Value:COL1:
Row2 Value:COL2:
等
我也尝试了以下查询
EXPORT TO "TEST.csv"
OF DEL
MODIFIED BY NOCHARDEL
SELECT 'COL1',col1,'COL2',col2
FROM ADMIN_EXPORT;
但是当使用excel打开时,这会列出每个行数据的列名。
有没有办法可以获得以下格式的数据
COL1 COL2
value value
value value
在excel中打开时。
由于
答案 0 :(得分:6)
经过几天的搜索,我解决了这个问题:
EXPORT TO ...
SELECT 1 as id, 'COL1', 'COL2', 'COL3' FROM sysibm.sysdummy1
UNION ALL
(SELECT 2 as id, COL1, COL2, COL3 FROM myTable)
ORDER BY id
您无法从零中选择db2中的常量字符串,因此您必须从sysibm.sysdummy1中进行选择。 要在第一行中手动添加列,您必须添加伪标识并按该标识对UNION结果进行排序。否则标题可以位于结果文件的底部。
答案 1 :(得分:0)
一个非常老的问题,但是我最近遇到了一个类似的问题,即它可以在11.5版本中使用EXTERNAL TABLE
功能来轻松实现,请参见此处的答案:
https://stackoverflow.com/a/57584730/11946299
示例:
$ db2 "create external table '/home/db2v115/staff.csv'
using (delimiter ',' includeheader on) as select * from staff"
DB20000I The SQL command completed successfully.
$ head /home/db2v115/staff.csv | column -t -s ','
ID NAME DEPT JOB YEARS SALARY COMM
10 Sanders 20 Mgr 7 98357.50
20 Pernal 20 Sales 8 78171.25 612.45
30 Marenghi 38 Mgr 5 77506.75
40 O'Brien 38 Sales 6 78006.00 846.55
50 Hanes 15 Mgr 10 80659.80
60 Quigley 38 Sales 66808.30 650.25
70 Rothman 15 Sales 7 76502.83 1152.00
80 James 20 Clerk 43504.60 128.20
90 Koonitz 42 Sales 6 38001.75 1386.70
答案 2 :(得分:-2)
将列名插入表中的第一行。
使用order by确保具有列名的行首先出现。