0

我正在尝试将数据从 postgres 移动到 sqlserver。我想通过使用元数据从 sqlserver 中的 postgres 重新创建表。

information_schema 具有列数据类型,但我需要解析信息以生成可用的创建表语句。

是否有任何模块可以为我做到这一点?

我是 python 场景的新手。谢谢

jlj

4

1 回答 1

2

请使用以下查询获取,请在子句create statement中传递表名where

select 'CREATE TABLE ' || a.attrelid::regclass::text || '(' ||
string_agg(a.attname || ' ' || pg_catalog.format_type(a.atttypid,
a.atttypmod)||
    CASE WHEN
        (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
         FROM pg_catalog.pg_attrdef d
         WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef) IS NOT 
NULL THEN
        ' DEFAULT '|| (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
                      FROM pg_catalog.pg_attrdef d
                      WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef)
    ELSE
        '' END
||
    CASE WHEN a.attnotnull = true THEN
        ' NOT NULL'
    ELSE
        '' END,E'\n,') || ');'
FROM pg_catalog.pg_attribute a join pg_class on a.attrelid=pg_class.oid
WHERE a.attrelid::regclass::varchar =
'table_name'
AND a.attnum > 0 AND NOT a.attisdropped  and pg_class.relkind='r'
group by a.attrelid;
于 2020-06-08T10:06:57.893 回答