Jak przekonwertować Postgresql Boolean na MySQL Tinyint?

Aug 21 2020

Próbuję migrować tabelę PostgreSQL do MySQL ze wszystkimi danymi, ale nie mogłem przeprowadzić migracji z powodu dwóch kolumn. Te kolumny znajdują się w tabeli Postgresql jako wartości logiczne, a wartości w tych kolumnach to PRAWDA lub FAŁSZ (wygląda jak ciąg). Utworzyłem kolumnę logiczną w MySQL, ale nie akceptuje ona danych TRUE / FALSE. Czego powinienem używać zamiast wartości logicznych dla tych wartości PRAWDA / FAŁSZ? Próbowałem tinyint (4), ale to nie działa (muszę migrować dane, ponieważ jest to PRAWDA lub FAŁSZ, a nie t / f lub 1/0).

Przykład:

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

Odpowiedzi

1 kmoser Aug 21 2020 at 14:10

Przenieś je jako VARCHAR(255). Następnie dla każdej z tych kolumn, które chcesz przekonwertować na natywny MySQL TINYINT(1):

  • Utwórz kolejną kolumnę (np. test) TypuTINYINT(1)
  • Wydaj polecenie UPDATE tbl SET test = IF( bool_col = 'TRUE', 1, 0 ), gdzie bool_coljest kolumna migrowana z PostgreSQL, która zawiera ciąg logiczny
  • Upuść bool_colkolumnę
  • Zmień nazwę testkolumny na bool_col(lub cokolwiek wolisz)

Powtórz powyższe kroki dla każdej kolumny, którą chcesz przekonwertować.