【问题标题】:create external table with headers in netezza (postgres)在 netezza (postgres) 中创建带有标题的外部表
【发布时间】:2013-04-24 16:30:40
【问题描述】:

我正在创建一个如下所示的外部表

CREATE EXTERNAL TABLE '~\test.csv' 
USING ( DELIMITER ',' Y2BASE 2000 ENCODING 'internal' REMOTESOURCE 'ODBC' ESCAPECHAR '\' )
AS SELECT * FROM TEST_TABLE;

它工作正常。我的问题是:

有没有一种方法可以将标题值命名为 test.csv 文件中的列名?是否可以在 Netezza 或 postgres 中使用。

我认为我们可以使用 COPY 来完成,但我想使用 EXTERNAL TABLE 命令来完成。

谢谢

【问题讨论】:

    标签: csv netezza


    【解决方案1】:

    如果您拥有 Netezza 7.2 或更高版本,实际上有一种方法可以在文件中包含标题。

    选项是 'includeheader' ,但它看起来不像 Aginity Workbench 突出显示 'includeheader' 好像它是一个选项(至少在我的版本中:4.8)。

        CREATE EXTERNAL TABLE '~\test.csv' 
        USING
    ( 
    DELIMITER ','
    Y2BASE 2000 
    ENCODING 'internal' 
    REMOTESOURCE 'ODBC' 
    ESCAPECHAR '\'
    /****THIS IS THE OPTION ****/
    INCLUDEHEADER
    )
            AS 
        SELECT * 
        FROM TEST_TABLE;
    

    您会注意到 Aginity 不会对选项应用突出显示,但它会执行并将标题写入第一行。

    【讨论】:

    • 未命名中包含的标头
    【解决方案2】:

    在 Netezza 7.2 版中,您现在可以指定 IncludeHeader 选项以使用外部表实现此目的。

    这是记录在here

    【讨论】:

    • 是的,包含标题,但列未命名
    【解决方案3】:

    这是另一个例子,与 qSlug 给出的想法相同......

    CREATE EXTERNAL TABLE 
    'C:\HEADER_TEST.csv' USING 
    (DELIMITER '|' ESCAPECHAR '\' Y2BASE 2000 REMOTESOURCE 'ODBC') AS
    
    --actual query goes here.  Leave the 'data' field on there.
    (select store_name, address1, 'data'
    from yourtable
    limit 10)
    union
    --field names go here.  Leave the 'header' field on there.
    select 'store_name', 'address1', 'header'
    from _v_dual
    order by 3 desc
    

    然后,您可以从 csv 文件中删除最后一列。

    【讨论】:

    • 仅适用于所有字符数据或先将所有真实数据转换为 char。
    【解决方案4】:

    它并不漂亮,而且可能会增加一些查询开销,但您可以执行以下操作:

    CREATE EXTERNAL TABLE ... AS
    SELECT ColumnId, OtherColumn 
    FROM (
        SELECT FALSE as IsHeader, ColumnId::VARCHAR(512), OtherColumn::VARCHAR(512)
        FROM TEST_TABLE
        UNION ALL
        SELECT TRUE as IsHeader, 'ColumnId', 'OtherColumn'
    ) x
    ORDER BY IsHeader DESC
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多