PostgreSQLのINSERTで詰まった

配列型

今日一日中つまりまくってました。
(ってかデータ量が多くて待ち時間長すぎなのが一番の原因・・・こういうのはどうもならんだろうな)

配列型のときに二重引用符(ダブルクオート)使うとエラーになる。

まずはダメな例*1

insert into tablename values ({りんご "は" うめー});
WARNING:  nonstandard use of escape in a string literal

いろいろ探したけど見つからず、なんとなく下記のようにしたらできたのでとりあえずこれでいく。

insert into tablename values (ARRAY['りんご "は" うめー']);

\(バックスラッシュ)

あと、PostgreSQLは\(バックスラッシュ)もだめらしい。
エスケープとかに使ってるからかな。

で、将来的に\は使うのやめるらしく

ダメな例

insert into tablename values ('りんご\うめー');

HINT:  Use the escape string syntax for backslashes, e.g., E'\\'.
WARNING:  nonstandard use of \\ in a string literal

エラーのHINTにも出てきているけどE''を使って以下のようにする。

insert into tablename values (E'りんご\うめー');

で、両方ともエラーなしにINSERTできたよっ!!

*1:ってかSQL適当すぎる...