質問

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文字列オプションに関するドキュメントを読む方が迅速かもしれません。

http://www.postgresql.org/docs/9.0/static/sql-copy.html

他のヒント

CSVで使用する場合のデフォルトは、次のような引用されていない空の文字列です。

,col1,col2,col3,,col5

次のように見えるレコードを作成します。

NULL,'col1','col2','col3',NULL,'col5'
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top