【发布时间】:2018-07-26 21:16:38
【问题描述】:
我有一个用户表,我想将字符串列 foo 转换为带有 {"oldfield": } 的 json,但我似乎找不到正确的语法。我是直接用psql命令行界面的。
这是我尝试过的:
ALTER TABLE user_schema.user ALTER COLUMN "foo" SET DATA TYPE json USING '{"oldfield": "foo"}';
这会将字段完全更改为 {"oldfield":"foo"},而不是 foo 列的实际值。我还尝试了以下组合,所有组合都因语法错误而失败。有任何想法吗?谢谢
ALTER TABLE user_schema.user ALTER COLUMN "foo" SET DATA TYPE json USING '{"oldfield": foo}';
ERROR: invalid input syntax for type json
DETAIL: Token "foo" is invalid.
CONTEXT: JSON data, line 1: {"oldfield": foo...
ALTER TABLE user_schema.user ALTER COLUMN "foo" SET DATA TYPE json USING '{"oldfield": \"foo\"}';
ERROR: invalid input syntax for type json
DETAIL: Token "\" is invalid.
CONTEXT: JSON data, line 1: {"oldfield": \...
ALTER TABLE user_schema.user ALTER COLUMN "foo" SET DATA TYPE json USING '{"oldfield": 'foo'}';
ERROR: syntax error at or near "foo"
LINE 1: ...Metadata" SET DATA TYPE json USING '{"oldfield": 'foo...
^
ALTER TABLE user_schema.user ALTER COLUMN "foo" SET DATA TYPE json USING '{"oldfield": `foo`}';
ERROR: invalid input syntax for type json
DETAIL: Token "`" is invalid.
CONTEXT: JSON data, line 1: {"oldfield": `...
ALTER TABLE user_schema.user ALTER COLUMN "foo" SET DATA TYPE json USING '{"oldfield": user.foo}';
ERROR: invalid input syntax for type json
DETAIL: Token "user" is invalid.
CONTEXT: JSON data, line 1: {"oldfield": user...
ALTER TABLE user_schema.user ALTER COLUMN "foo" SET DATA TYPE json USING '{"oldfield": user_schema.user.foo}';
ERROR: invalid input syntax for type json
DETAIL: Token "user_schema" is invalid.
CONTEXT: JSON data, line 1: {"oldfield": user_schema...
ALTER TABLE user_schema.user ALTER COLUMN "foo" SET DATA TYPE json USING '{"oldfield": foo}';
ERROR: invalid input syntax for type json
DETAIL: Token "foo" is invalid.
【问题讨论】:
标签: sql json postgresql database-migration