Come convertire Postgresql Boolean in MySQL Tinyint?

Aug 21 2020

Sto cercando di migrare una tabella PostgreSQL a MySQL con tutti i dati, ma non sono riuscito a migrare a causa di due colonne. Queste colonne sono nella tabella Postgresql come booleane e i valori in queste colonne sono VERO o FALSO (sembra una stringa). Ho creato una colonna booleana in MySQL ma non accetta i dati VERO / FALSO. Cosa dovrei usare al posto di booleano per questi valori VERO / FALSO? Ho provato tinyint (4) ma non funziona (devo migrare i dati perché è VERO o FALSO, non t / f o 1/0).

Un esempio:

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

Risposte

1 kmoser Aug 21 2020 at 14:10

Migrali come VARCHAR(255). Quindi, per ciascuna di quelle colonne che desideri convertire in MySQL nativo TINYINT(1):

  • Crea un'altra colonna (ad esempio test) di tipoTINYINT(1)
  • Esegui il comando UPDATE tbl SET test = IF( bool_col = 'TRUE', 1, 0 ), dov'è bool_colla colonna migrata da PostgreSQL che contiene la stringa booleana
  • Rilascia la bool_colcolonna
  • Rinomina la testcolonna in bool_col(o come preferisci)

Ripeti i passaggi precedenti per ogni colonna che desideri convertire.