Как преобразовать Postgresql Boolean в MySQL Tinyint?

Aug 21 2020

Я пытаюсь перенести таблицу PostgreSQL в MySQL со всеми данными, но мне не удалось выполнить миграцию из-за двух столбцов. Эти столбцы в таблице Postgresql являются логическими, а значения в этих столбцах - ИСТИНА или ЛОЖЬ (это выглядит как строка). Я создал логический столбец в MySQL, но он не принимает данные TRUE / FALSE. Что мне следует использовать вместо логического для этих значений ИСТИНА / ЛОЖЬ? Я попробовал tinyint (4), но это не сработало (я должен перенести данные, поскольку они ИСТИНА или ЛОЖЬ, а не t / f или 1/0).

Пример:

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

Ответы

1 kmoser Aug 21 2020 at 14:10

Перенесите их как VARCHAR(255). Затем для каждого из этих столбцов, которые вы хотите преобразовать в собственный MySQL TINYINT(1):

  • Создайте еще один столбец (например test) типаTINYINT(1)
  • Введите команду UPDATE tbl SET test = IF( bool_col = 'TRUE', 1, 0 ), где bool_colнаходится столбец, который вы перенесли из PostgreSQL, который содержит логическую строку
  • Отбросьте bool_colстолбец
  • Переименуйте testстолбец в bool_col(или как хотите)

Повторите вышеуказанные шаги для каждого столбца, который вы хотите преобразовать.