Postgresqlブール値をMySQLTinyintに変換する方法は?

Aug 21 2020

PostgreSQLテーブルをすべてのデータを含むMySQLに移行しようとしていますが、2つの列があるため移行できませんでした。これらの列はブール値としてPostgresqlテーブルにあり、これらの列の値はTRUEまたはFALSEです(文字列のように見えます)。MySQLでブール列を作成しましたが、TRUE / FALSEデータを受け入れません。これらのTRUE / FALSE値にブール値の代わりに何を使用する必要がありますか?tinyint(4)を試しましたが、機能しません(t / fまたは1/0ではなくTRUEまたはFALSEであるため、データを移行する必要があります)。

例:

Postgresqltable( id bigserial not null, message_listening boolean, ....... ) 
Example record: (1, TRUE, .......)

回答

1 kmoser Aug 21 2020 at 14:10

それらをとして移行しますVARCHAR(255)。次に、ネイティブMySQLに変換する列ごとに次のようにしますTINYINT(1)

  • testタイプの別の列(例)を作成しますTINYINT(1)
  • コマンドを発行します。UPDATE tbl SET test = IF( bool_col = 'TRUE', 1, 0 )ここで、bool_colはPostgreSQLから移行した、ブール文字列を含む列です。
  • bool_col列を削除します
  • test列の名前をbool_col(または任意の名前に)変更します

変換する列ごとに上記の手順を繰り返します。