2

テキスト ファイルを netezza にインポートしようとしています。簡単な例として、1 列のファイルを使用します。

ファイル

01/04/2011
01/01/2099
01/01/2011

私はテーブルを持っています

create table test_data
(f date)

私はデータをロードしようとします

insert into test_data
select * from 
EXTERNAL 'C:\\Temp\\dt.txt'
USING
(   
    DATESTYLE 'DMY'
    DATEDELIM '/'
    MAXERRORS 100000000000
    Y2BASE 2000
    ENCODING 'internal'
    REMOTESOURCE 'ODBC'
    delimiter '\t'
    CRINSTRING TRUE
    TRUNCSTRING TRUE
    CTRLCHARS TRUE
    IGNOREZERO TRUE
   -- ESCAPECHAR '\'
)

挿入後にテーブルにデータがありません。理性について何か考えはありますか?

4

3 に答える 3

4

私は非常に古い質問に答えていることを知っていますが、Googleはこれを「netezza datestyle」の一番上に置くので、正しい答えが必要です.

データ ファイルとテスト テーブルの DDL はどちらも問題ありません。INSERT ステートメントには、必要のない多くのパラメーターがあります。最小限の構文は次のとおりです。

insert into test_data
select * from 
EXTERNAL 'C:\\Temp\\dt.txt'
USING
(   
    DATESTYLE 'DMY'
    DATEDELIM '/'
    REMOTESOURCE ODBC -- note that you had this as a quoted string. Either should work
    LOGDIR 'C:\\Temp' -- as someone pointed out, this will give you log files to troubleshoot
);

サンプル ファイルでこの構文をテストしたところ、データが正しく読み込まれ、並べ替えられます (たとえば、2011 年 1 月 4 日は 1 月 4 日ではなく 4 月 1 日であることがわかっています)。 「モンディ」。デフォルトは「YMD」です

maxerrors が高い (LOGDIR なし) ということは、エラーが発生すると、レコードが暗黙のうちに破棄されることを意味します。不正なデータ レコードを考慮する必要がない限り、MAXERRORS をできるだけ低く設定します (オプションのヘッダー行を考慮するには 1 など)。

于 2014-10-27T16:55:00.080 に答える
0

挿入の構文は、リモートソースから見ると問題ないようです。insert ステートメントから生成された nzlog が表示されるはずです。ログから受け取ったエラーを貼り付けていただけますか?

于 2014-01-10T21:45:44.177 に答える
-3

クエリで using 部分を使用する必要はありません

正しい例は次のとおりです。

insert into table_name select * from external C:\temp\dt.txt

これにより、問題なくテーブルにデータがロードされるはずです

于 2013-08-16T04:52:35.897 に答える