質問: PostgreSQLデータベースで、 CSVファイルからcopy from文を使ってデータをインポートしようとしております。 ・CSVファイル 囲み文字:"(全文字囲われています) 区切り文字:, ・COPY句 ``` COPY {テーブル} FROM '{CSVファイル}' WITH ( FORMAT CSV ,NULL ''); ``` 上記のCSVファイルを取り込む際に、numericの項目で下記のエラーが発生しております。 ``` ERROR: invalid input syntax for type numeric: "" CONTEXT: COPY {テーブル名}, line 1, column {数値項目}: "" ``` numeric属性に対して、文字項目を挿入しようとしてエラーになっているようなのですが、理由がわかりません。 Copy句で「NULL ''」を指定しているので、それによりCSV上の空文字も「NULL」になると期待していたのですが......。 対象の項目は数値項目ですが、空文字が存在しており、空文字と0とは明確に切り分ける必要があります。(データ例:"1234","0","") 上記のような項目を取り込むことはできないのでしょうか? 上記のような現象に何か心当たりなどあるかたがおられましたら、 ご教授いただきたく思います。
回答: csv postgreql numeric null で google 検索すると次のようなページが見つかりました。 * [PostgreSQL]COPYコマンドでNULLを扱う > > ... > > インポートのバリエーションとして、NULL で取り込まれている空文字も空文字で取り込みたい場合、 force_not_null オプションを利用する。 > > ... > > > * PostgreSQLのCSV取り込み > > ... > > 空文字をNULLとして扱うという指定(WITH NULL AS '')をすれば、回避できます。 > > COPY [テーブル名] FROM [ファイルの絶対パス] WITH NULL AS ''; > > ... > > > こうして得た情報をもとに、いろいろ試してみたり、さらの別の単語で検索をすると解決できると思います。