プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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/s …

この回答への補足

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.

補足日時:2011/12/23 16:43
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/12/23 14:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す