在 postgresql 中生成 create table 语句

Generate create table statements in postgresql

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

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

是否有任何模块可以为我执行此操作?

我是 python 领域的新手。 谢谢

jlj

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

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;