在 IBM netezza aginity sql 数据库工作台中导出大表时如何添加列名

Posted

技术标签:

【中文标题】在 IBM netezza aginity sql 数据库工作台中导出大表时如何添加列名【英文标题】:how to add column names when exporting a large table in IBM betezza aginity sql database workbench 【发布时间】:2014-10-03 05:29:24 【问题描述】:

我需要将一个表 (60 GB) 从 IBM netteza aginity sql 数据库工作台导出到一个 csv 文件。

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

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

如何添加列名?

任何帮助将不胜感激。

谢谢

【问题讨论】:

【参考方案1】:

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

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

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

copy header_file.txt+data_file.txt new_file.txt

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

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

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

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

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

【讨论】:

以上是关于在 IBM netezza aginity sql 数据库工作台中导出大表时如何添加列名的主要内容,如果未能解决你的问题,请参考以下文章

Win7 上 Aginity 工作台对 IBM netezza SQL 数据库的 SQL 查询错误

在 IBM netezza aginity sql 数据库工作台中导出大表时如何添加列名

将 SQL 数据库从一台服务器复制到 IBM netezza Aginity 工作台上的另一台服务器

在 win 7 上的 IBM netezza Aginity 工作台中查找数据库大小的错误

在 IBM netezza aginity 工作台中更改表名的错误

无法从 C# VS2013 访问 IBM Netezza 服务器,但在 IBM Aginity 工作台中运行良好