ID列でCSVファイルをコピーします
-
24-10-2019 - |
質問
Railsアプリケーションがあり、PostgreSQLのコピーコマンドを介してデータをロードしようとしています。ファイルはCSVです。テーブルはRailsモデルにマップし、Model.for_eachを使用してデータを再生できるように、プライマリキーID列を保持する必要があります。テーブルには5m+行があります。
私の質問は、テーブルにデータを読み込み、ID列がそこにあることを許可するように、CSVを構成するにはどうすればよいですか?私がそれを必要とする唯一の理由はfor_eachメソッドのためであるため、それは残念です。
とにかく、私は次のようにヌルを送信しようとしました。
NULL,col1,col2,col3,col4, etc.
しかし、それはうまくいきません。
ありがとう。
解決
プライマリキーをnullに渡すことは、null stringに設定したオプションに関係なく機能しません。バックエンドに、プライマリキーをnullに設定するように指示します。
私はあなたが主キーを保持することによってあなたが何を意味するのか本当に分かりません。それは何があっても保持されるものです。 DBにあなたの値を選択させることを意味する場合、主キーはシリアル(自動インクリメント)であり、すべての列以外のすべての列に明示的に名前を付けます。
COPY country (colA, colB, colC) FROM '/usr1/proj/bray/sql/country_data'; -- leave out pkey
また、考えられる値を推測する代わりに、使用したいnull文字列オプションに関するドキュメントを読む方が迅速かもしれません。
他のヒント
CSVで使用する場合のデフォルトは、次のような引用されていない空の文字列です。
,col1,col2,col3,,col5
次のように見えるレコードを作成します。
NULL,'col1','col2','col3',NULL,'col5'
所属していません StackOverflow