3

我想将 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中打开时。

谢谢

4

3 回答 3

7

经过几天的搜索,我以这种方式解决了这个问题:

 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 中进行选择。要在第一行中手动添加列,您必须添加一个伪 ID 并按该 ID 对 UNION 结果进行排序。否则,标题可能位于结果文件的底部。

于 2014-09-24T19:45:21.993 回答
1

相当老的问题,但我最近遇到了一个类似的问题,意识到这可以在具有EXTERNAL TABLE功能的 11.5 版本中更容易实现,请在此处查看答案: 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
于 2019-08-21T05:10:17.430 回答
-1

将列名作为表中的第一行插入。

使用 order by 确保具有列名的行首先出现。

于 2012-04-12T21:17:22.430 回答