質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

1回答

37520閲覧

PostgreSQLのCOPY文での数値項目への空文字インポートについて

Satoshi_Okada

総合スコア19

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

1クリップ

投稿2016/03/25 12:18

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","")
上記のような項目を取り込むことはできないのでしょうか?

上記のような現象に何か心当たりなどあるかたがおられましたら、
ご教授いただきたく思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

csv postgreql numeric null
で google 検索すると次のようなページが見つかりました。

...
インポートのバリエーションとして、NULL で取り込まれている空文字も空文字で取り込みたい場合、 force_not_null オプションを利用する。
...

...
空文字をNULLとして扱うという指定(WITH NULL AS '')をすれば、回避できます。
COPY [テーブル名] FROM [ファイルの絶対パス] WITH NULL AS '';
...

こうして得た情報をもとに、いろいろ試してみたり、さらの別の単語で検索をすると解決できると思います。

投稿2016/03/25 13:24

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Satoshi_Okada

2016/03/31 07:28

回答ありがとうございます。 コメント頂いた情報を元にさらに調べてみたのですが、 どうにもうまく行かず、別の方法で対応することとしました。 心残りはありますが、一旦解決とさせていただきます。 ありがとうございました。
katoy

2016/03/31 07:32

> ... 別の方法で対応することとしました。... 他の方の参考となるように、さしさわりがなければ その方法を記載するとよいと思います。
Satoshi_Okada

2016/04/04 01:33

>他の方の参考となるように、さしさわりがなければ その方法を記載するとよいと思います。 コメントありがとうございます。 もともと、この処理はワークテーブルにデータを取込、その後、PLSQLで本テーブルにデータを取り込むことを想定しておりました。 今回、数値として取り込むことが難しかったため、ワークテーブルを全て文字型に変更、 PLSQL側で考慮することとしました。 ですので、同じ問題に対する参考になるかはわかりませんが……。 ファイルで来る以上、一度は文字項目として受け取ったほうがいいかもしれませんね、という結論でした。 粗末な結論で申し訳ないのですが、こんな感じです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問