2016-05-11 16 views
0

を使用して配列フィールドにインポートデータを配列フィールドに格納します。たTextWriterは、配列を受け入れていないので、動作しないBeginTextImportを使用する:バルクデータは、私はPostgreSQLでは、以下の表を持ってNpgsqlの

using (var writer = connection.BeginTextImport(
    "COPY table (name, keywords) FROM STDIN DELIMITER ';'" 
)) 
{  
    foreach (var item in items) 
    { 
     writer.Write(item.Name + ";"); 
     // How to do this? 
     writer.Write(item.Keywords.ToArray(), NpgsqlDbType.Array | NpgsqlDbType.Text); 
    } 
} 

BeginBinaryImportを使用すると、エラーを与える:「はない近い作家、行は最初のNpgsqlのを終了し、まだ進行中であることができます」。

using (var writer = connection.BeginBinaryImport(
    "COPY table (name, keywords) FROM STDIN (FORMAT BINARY)" 
)) 
{  
    foreach (var item in items) 
    { 
     writer.StartRow(); 
     writer.Write(item.Name, NpgsqlDbType.Text); 
     writer.Write(item.Keywords.ToArray(), NpgsqlDbType.Array | NpgsqlDbType.Text); 
    } 
}// Exception thrown here 

データをアレイフィールドに一括コピーするにはどうすればよいですか?

+0

この場合、テキストのインポートは不適切です。つまり、PostgreSQLのテキスト形式(区切り文字とすべて)ですべての書式を設定する必要があります。 –

+0

私はちょうどあなたのバイナリコードの例を試して、うまく動作します - あなたは正確にどのようなバージョンのNpgsqlを使用していますか?あなたの商品リストはどんなタイプですか?問題を再現する完全なソースコードを提出できますか? –

答えて

2

this?これはあなたが使用することができるthis libraryを参照しています(自分で使っていないので、私はそれにコメントできません)。

追加の依存関係を取りたくない場合は、少なくともそれがボンネット内で何をしているのかを見ることができます。

+0

ありがとう!余分な依存関係は確かに問題ですが、このライブラリがどのように実装されているかに基づいて、BinairyImportをうまく使うことができます。それはまだ動作していません(私の更新を参照してください)が、私は確かに解決策への一歩です。 – Xatoo

関連する問題