使用列名从db2导出数据

时间:2012-04-12 11:19:29

标签: db2 export-to-excel

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

由于

3 个答案:

答案 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确保具有列名的行首先出现。