Làm thế nào để chuyển đổi Postgresql Boolean sang MySQL Tinyint?

Aug 21 2020

Tôi đang cố gắng di chuyển bảng PostgreSQL sang MySQL với tất cả dữ liệu, nhưng tôi không thể di chuyển do có hai cột. Các cột này nằm trong bảng Postgresql dưới dạng boolean và các giá trị trong các cột này là TRUE hoặc FALSE (nó trông giống như một chuỗi). Tôi đã tạo một cột boolean trong MySQL nhưng nó không chấp nhận dữ liệu TRUE / FALSE. Tôi nên sử dụng gì thay vì boolean cho các giá trị TRUE / FALSE này? Tôi đã thử tinyint (4) nhưng nó không hoạt động (tôi phải di chuyển dữ liệu vì nó là TRUE hoặc FALSE, không phải t / f hoặc 1/0).

Một ví dụ:

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

Trả lời

1 kmoser Aug 21 2020 at 14:10

Di chuyển chúng dưới dạng VARCHAR(255). Sau đó, đối với mỗi cột bạn muốn chuyển đổi sang MySQL gốc TINYINT(1):

  • Tạo một cột khác (ví dụ test) loạiTINYINT(1)
  • Đưa ra lệnh UPDATE tbl SET test = IF( bool_col = 'TRUE', 1, 0 ), đâu bool_collà cột bạn đã di chuyển từ PostgreSQL có chứa chuỗi Boolean
  • Thả bool_colcột
  • Đổi tên testcột thành bool_col(hoặc bất kỳ thứ gì bạn thích)

Lặp lại các bước trên cho mỗi cột bạn muốn chuyển đổi.