首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在postgres中恢复sql文件时退出代码1

在postgres中恢复sql文件时退出代码1
EN

Stack Overflow用户
提问于 2021-02-18 09:32:05
回答 3查看 4.2K关注 0票数 0

我有一个手动生成的SQL文件。我使用下面的代码来创建它。

代码语言:javascript
复制
conn = psycopg2.connect(host=t_host, port=t_port, dbname=t_dbname, user=t_name_user, password=t_password)
cursor = conn.cursor()

table_name='product'  
with open("table_dump.sql","w+") as f:
    create_query ="""CREATE TABLE public.decima
                    (
                        product_name character varying(200) COLLATE pg_catalog."default",
                        product_owner character varying(20) COLLATE pg_catalog."default",
                        trigger_operation character varying(4) COLLATE pg_catalog."default",
                        name character varying(250) COLLATE pg_catalog."default" NOT NULL,
                        CONSTRAINT product_pkey PRIMARY KEY (name)
                    )

                    TABLESPACE pg_default;"""
    f.write('%s \n' % (create_query))  
    #select table query
    cursor.execute("SELECT * FROM %s" % (table_name)) 
    column_names = []
    columns_descr = cursor.description
    for c in columns_descr:
        column_names.append(c[0])
    #insert query (insert data)
    insert_prefix = 'INSERT INTO %s (%s) VALUES ' % (table_name, ', '.join(column_names))
    rows = cursor.fetchall()
    for row in rows:
        row_data = []
        for rd in row:
            if rd is None:
                row_data.append('NULL')
            elif isinstance(rd, datetime.datetime):
                row_data.append("'%s'" % (rd.strftime('%Y-%m-%d %H:%M:%S') ))
            else:
                row_data.append(repr(rd))
        f.write('%s (%s);\n' % (insert_prefix, ', '.join(row_data)))  

当我使用"table_dump.sql“恢复db时,出现了退出代码。但我将此文件作为查询执行,然后我的数据库仍然可以创建并照常工作。那么如何解决这个问题呢?谢谢。这就是我尝试恢复的方式

这是错误的详细信息

EN

Stack Overflow用户

发布于 2021-12-22 14:24:10

这可能不是一个解决方案,但在我的例子中,当我尝试在pgAdmin 4中逐个恢复模式时,也遇到了同样的问题。但是当我检查所有数据的时候。这似乎是一个在执行结束时显示的错误。

您可以使用下面的查询检查源数据库的大小以及要将其还原到的当前目标。

代码语言:javascript
复制
SELECT schema_name, 
       pg_size_pretty(sum(table_size)::bigint),
       (sum(table_size) / pg_database_size(current_database())) * 100
FROM (
  SELECT pg_catalog.pg_namespace.nspname as schema_name,
         pg_relation_size(pg_catalog.pg_class.oid) as table_size
  FROM   pg_catalog.pg_class
     JOIN pg_catalog.pg_namespace ON relnamespace = pg_catalog.pg_namespace.oid
) t
GROUP BY schema_name
ORDER BY schema_name
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66252327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档