Изменить столбец varchar на json в psql - PullRequest
0 голосов
/ 06 февраля 2020

Привет, я пытаюсь преобразовать столбец в моей таблице из varchar в json, и в таблице уже есть некоторые строковые данные. Я попытался сделать это с помощью приведенной ниже команды.

Database=# alter table table_name alter column message type json using
message::json;

Но команда завершилась неудачно с приведенной ниже ошибкой.

ERROR:  invalid input syntax for type json
DETAIL:  Token "This" is invalid.
CONTEXT:  JSON data, line 1: This...

Примечание. Столбец сообщения содержит набор слов с пробелами, как показано ниже .

"This is a message"

Я не уверен, что пошло не так. Заранее спасибо ..

1 Ответ

2 голосов
/ 06 февраля 2020

Вы можете использовать to_jsonb() вместо приведения:

alter table table_name 
  alter column message type jsonb using to_jsonb(message);

Если вы действительно хотите использовать json (хотя jsonb рекомендуется), затем приведите результат обратно к json тип:

alter table table_name 
  alter column message type json using to_jsonb(message)::json;

Но это выглядит довольно странно для столбца, который не содержит "настоящих" json значений, только простые строки.

...