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できたよっ!!