2017-09-18 20 views
1

CSVファイルをPostgreSQL 9.5.3にコピーしようとしていて、NULLの問題が発生しています。このファイルはASCIIでエンコードされています。私のclient_encodingはUTF-8で、サーバーエンコーディングはUTF-8です。 nullは、次のように引用符で囲まれた文字列です。PostgreSQLデータベースにNULLをコピーする

enter image description here

私は私のテーブル構造は、私は、 "\" を指定することで、それを脱出しようとした、とCopyコマンドの他のオプションを試してみました

CREATE TABLE TEST_NULL(NULLCOLUMN CHAR(10)); 

copy TEST_NULL from 'F:\User Area\DCS.TXT' csv NULL AS 'null'; 

でこのエラーに

ERROR: invalid byte sequence for encoding "UTF8": 0x00 
CONTEXT: COPY test_null, line 1 
********** Error ********** 

ERROR: invalid byte sequence for encoding "UTF8": 0x00 
SQL state: 22021 
Context: COPY test_null, line 1 

を取得何も動作していないようです。わからない、これをどのように処理するか。

+0

'DCS.TXT'ファイルの1行目は何ですか? –

+2

データベースヌルとutf8エンコードのヌルなどを混同しています。テキストファイルでヌルを取り除く必要があります。 trはこれを行うことができます。他のutilsも同様です。 tr -d '\ 000' outfile –

+0

カラムをbyteaに再定義し、そのままNULLをロードできますか? –

答えて

0

ファイルにはASCII 0文字が含まれていますが、PostgreSQLでは拒否されています。

COPYを使用してデータベースにロードする場合は、NULL値に別の表現を使用する必要があります。

関連する問題