6

以下に示すように、外部テーブルを作成しています

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 コマンドを使用して実行したいと考えています。

ありがとう

4

4 に答える 4

3

Netezza のバージョン 7.2 では、IncludeHeader オプションを指定して、外部テーブルでこれを実現できるようになりました。

これはここに文書化されています

于 2014-11-19T20:39:52.580 に答える
1

きれいではなく、クエリにある程度のオーバーヘッドが追加される可能性がありますが、次のようにすることができます。

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
于 2014-01-21T05:35:48.430 に答える
0

これは、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 ファイルから最後の列を削除するだけです。

于 2014-06-16T16:58:41.377 に答える