Wie konvertiere ich Postgresql Boolean in MySQL Tinyint?

Aug 21 2020

Ich versuche, eine PostgreSQL-Tabelle mit allen Daten auf MySQL zu migrieren, konnte jedoch aufgrund von zwei Spalten nicht migrieren. Diese Spalten befinden sich in der Postgresql-Tabelle als Boolescher Wert, und die Werte in diesen Spalten sind TRUE oder FALSE (es sieht aus wie eine Zeichenfolge). Ich habe in MySQL eine boolesche Spalte erstellt, die jedoch die TRUE / FALSE-Daten nicht akzeptiert. Was soll ich für diese TRUE / FALSE-Werte anstelle von Boolean verwenden? Ich habe tinyint (4) ausprobiert, aber es funktioniert nicht (ich muss die Daten migrieren, da sie WAHR oder FALSCH sind, nicht t / f oder 1/0).

Ein Beispiel:

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

Antworten

1 kmoser Aug 21 2020 at 14:10

Migrieren Sie sie als VARCHAR(255). Dann möchten Sie für jede dieser Spalten, die Sie in natives MySQL konvertieren möchten TINYINT(1):

  • Erstellen Sie eine weitere Spalte (z. B. test) vom TypTINYINT(1)
  • Geben Sie den Befehl aus UPDATE tbl SET test = IF( bool_col = 'TRUE', 1, 0 ), wobei bool_colsich die Spalte befindet, die Sie von PostgreSQL migriert haben und die die Boolesche Zeichenfolge enthält
  • Löschen Sie die bool_colSpalte
  • Benennen Sie die testSpalte in bool_col(oder was auch immer Sie bevorzugen) um.

Wiederholen Sie die obigen Schritte für jede Spalte, die Sie konvertieren möchten.