• ベストアンサー

booleanデータのcsv出力形式

postgresqlのデータをcsvテキストに出力してmysqlに入れたら、booleanデータがmysqlではすべて 0 になりました。 postgresqlのbooleanはt/f表現であり、mysqlでは1/0表現のためと思いますが、うまく処理する方法はないでしょうか? 2011 Dec. 18.

質問者が選んだベストアンサー

  • ベストアンサー
  • gacky-79
  • ベストアンサー率100% (14/14)
回答No.1

CSVのテキストに出力するために COPY TO を使っているのならば、 booleanをintegerにキャストして出力すると 1/0 になります。 COPY (SELECT b::int FROM (VALUES(true),(false)) T(b)) TO 'xxx.csv' WITH (FORMAT 'csv')

参考URL:
http://www.postgresql.jp/document/current/html/sql-copy.html
RASUM2
質問者

お礼

gacky-79さま、ありがとうございます。 試してみたところ、 ERROR: must be superuser to COPY to or from a file となり、superuserを忘れてしまっていて進めなくなりました。 2011 Dec. 23.

RASUM2
質問者

補足

postgresスーパーユーザのパスワードを設定し直して試すことができました。 COPY ( SELECT column::int FROM table ) TO STDOUT WITH (FORMAT 'csv'); では ERROR: syntax error at or near "(" LINE 1: ...TO STDOUT WITH (FORMAT 'c...              ^ となります。 COPY ( SELECT column::int FROM table ) TO STDOUT; では 書式がcsvではありませんが、論理値が0/1に変換されてテキスト出力されます。 postgresqlのバージョンは8.3です。 2011 Dec. 23.

関連するQ&A