LoginSignup
straysheep2020
@straysheep2020 (stray sheep)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

"文字が含まれるcsvをcopyコマンドでpostgresへ登録したい

Q&AClosed

解決したいこと

oracleから、csv形式でデータを抜き出しました。
文字列は ""で囲んでます。

postgresの型は以下の通りです。
ID(int),name(varchar),address(text)

インポートするデータは
21,"キータ太郎","{"string":{"id":1,"name":"キータ太郎"},"string2":{~
のように数字、文字列、文字列(json形式のデータ)が格納されています。

DBに格納したい形は
21,キータ太郎,{"string":{"id":1,"name":"キータ太郎"},"string2":{~
→文字列の先頭と末尾の「"」を削除した状態で登録を行いたいです。

インポート方法としては、コマンドライン(SQL Shell)を呼び出してcopyコマンドを実施しています。

その他:nameカラムはnullの可能性がある。UTF8でインポートを行う

発生している問題・エラー

コマンドは通りますが、登録すると
21,キータ太郎,{string:{id:1,name:キータ太郎},string2:{~
のように"が全て削除されてしまう。(QUOTE のdefault値なので当たり前ですが・・・)

以下コマンドを実行

\copy tablename from C:\export_csv\oracle.csv with (format csv, null '', force_null( name) ,encoding 'UTF-8')

もし解決する手段などありましたらご教示の程よろしくお願いします。

0

1Answer

oracleからエクスポートする際に、文字列を""→||に変更し、
QUOTE '|' を指定することで解決したためクローズします。
(根本解決ではないが・・)

0

Your answer might help someone💌