在IBM netezza aginity sql database workbench中导出大型表时如何添加列名

时间:2014-10-03 05:29:25

标签: sql database export netezza

我需要将一个表(60 GB)从IBM netteza aginity sql database workbench导出到csv文件。

但是,即使我将“跳过行”设置为0,列名也会丢失。

由于文件太大,我无法在Excel或记事本/记事本++中打开和编辑它。

如何添加列名?

任何帮助将不胜感激。

感谢

1 个答案:

答案 0 :(得分:1)

据我所知,没有任何功能可以自动记录来自Aginity Workbench的导出数据。另外,据我所知,导出功能中的“跳过行”功能已禁用,与添加列文档无关。对于导入,它肯定会让您跳过列标题行。

编辑:使用NPS 7.2的GA,“IncludeHeader”选项已添加到可用的外部表选项中,该选项将在输出文件中创建注释的标题行。可能需要Aginity一段时间才能更新Workbench以直接支持此功能,但您始终只需复制它生成的代码并手动添加该选项。

您可以创建一个独立的头文件,并在Windows中使用命令提示符副本将这两个文件附加在一起而不会打开,如下所示:

copy header_file.txt+data_file.txt new_file.txt

我使用了两种不同的方法来创建标题行。

第一种是使用“LIMIT 1”运行用于导出的查询,然后在输出窗口中选择所有输出,右键单击并选择“使用标题复制”。然后,您可以将输出粘贴到Excel中并添加到标题列表中。

第二种方法是在表格中生成有序的列列表,然后将电子表格中的输出从列转置为行。您可以使用以下代码段生成该输出。

SELECT attname,
   atttype,
   attnotnull,
   attnum
FROM _v_relation_column_def
WHERE attnum > 0
AND objid    =
   (
      SELECT objid
      FROM _v_obj_relation
      WHERE objname = ^TABLENAME_TO_EXPORT^
      AND schemaId IN ( current_schemaid,
                       4,
                       5 )
      AND objclass NOT IN (4919,
                           4917)
      ORDER BY schemaId DESC
   )
ORDER BY attnum

这些方法都不是完美的选择,但我认为我会分享我所拥有的。