Comment convertir Postgresql Boolean en MySQL Tinyint?

Aug 21 2020

J'essaie de migrer une table PostgreSQL vers un MySQL avec toutes les données, mais je n'ai pas pu migrer à cause de deux colonnes. Ces colonnes sont dans la table Postgresql en tant que booléen et les valeurs de ces colonnes sont TRUE ou FALSE (cela ressemble à une chaîne). J'ai créé une colonne booléenne dans MySQL mais elle n'accepte pas les données TRUE / FALSE. Que dois-je utiliser au lieu de booléen pour ces valeurs TRUE / FALSE? J'ai essayé tinyint (4) mais cela ne fonctionne pas (je dois migrer les données car elles sont TRUE ou FALSE, pas t / f ou 1/0).

Un exemple:

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

Réponses

1 kmoser Aug 21 2020 at 14:10

Faites-les migrer en tant que VARCHAR(255). Ensuite, pour chacune de ces colonnes que vous souhaitez convertir en MySQL natif TINYINT(1):

  • Créer une autre colonne (par exemple test) de typeTINYINT(1)
  • Exécutez la commande UPDATE tbl SET test = IF( bool_col = 'TRUE', 1, 0 ), où se bool_coltrouve la colonne que vous avez migrée de PostgreSQL qui contient la chaîne booléenne
  • Déposez la bool_colcolonne
  • Renommez la testcolonne en bool_col(ou ce que vous préférez)

Répétez les étapes ci-dessus pour chaque colonne que vous souhaitez convertir.