SQLAlchemy/PostgreSQL:将列类型从ARRAY更改为JSON

mf98qq94  于 2023-02-14  发布在  PostgreSQL
关注(0)|答案(1)|浏览(157)

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

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

但是我收到一个错误消息,说“cannot cast type character variing [] to json”。我试图更改的列是空的,没有行,所以没有需要转换为JSON的数据。因为它是空的,我想删除列并重新创建它,但我想保留列,如果可能的话,只更改其类型。我'我不是一个PostgreSQL的高手,所以任何正确方向的推动都将不胜感激。

plicqrtu

plicqrtu1#

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[]    |           |          |

相关问题