【问题标题】:SQLAlchemy/PostgreSQL: Change column type from ARRAY to JSONSQLAlchemy/PostgreSQL:将列类型从 ARRAY 更改为 JSON
【发布时间】:2023-02-09 00:36:27
【问题描述】:

我正在尝试将表中其中一列的类型从采用填充字符串的数组的类型更改为采用 JSON 的列。 我尝试执行的 SQL 如下所示:

ALTER TABLE my_table
ALTER COLUMN my_column TYPE JSON USING my_column::json

但是我收到一条错误消息,说“无法将类型字符 varying[] 转换为 json”。 我要更改的列是空的,没有行,因此没有需要转换为 JSON 的数据。由于它是空的,我想过删除该列并重新制作它,但我想保留该列并尽可能更改其类型。我不是 PostgreSQL 的高手,所以任何朝着正确方向的推动都会受到赞赏。

【问题讨论】:

  • select array_to_json(null::varchar[]); NULL

标签: postgresql sqlalchemy alembic


【解决方案1】:
 array_test 
                      Table "public.array_test"
    Column     |        Type         | Collation | Nullable | Default 
---------------+---------------------+-----------+----------+---------
 id            | integer             |           |          | 
 array_fld     | integer[]           |           |          | 
 numeric_array | numeric[]           |           |          | 
 jsonb_array   | jsonb[]             |           |          | 
 varchar_array | character varying[] |           |          | 
 text_array    | text[]              |           |          | 

ALTER TABLE array_test
    ALTER COLUMN varchar_array TYPE json
    USING array_to_json(varchar_array);

d array_test 
                 Table "public.array_test"
    Column     |   Type    | Collation | Nullable | Default 
---------------+-----------+-----------+----------+---------
 id            | integer   |           |          | 
 array_fld     | integer[] |           |          | 
 numeric_array | numeric[] |           |          | 
 jsonb_array   | jsonb[]   |           |          | 
 varchar_array | json      |           |          | 
 text_array    | text[]    |           |          | 



【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2016-02-03
    • 2021-03-04
    • 1970-01-01
    相关资源
    最近更新 更多