我有一个手动生成的SQL文件。我使用下面的代码来创建它。
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时,出现了退出代码。但我将此文件作为查询执行,然后我的数据库仍然可以创建并照常工作。那么如何解决这个问题呢?谢谢。这就是我尝试恢复的方式


这是错误的详细信息

发布于 2021-12-22 14:24:10
这可能不是一个解决方案,但在我的例子中,当我尝试在pgAdmin 4中逐个恢复模式时,也遇到了同样的问题。但是当我检查所有数据的时候。这似乎是一个在执行结束时显示的错误。
您可以使用下面的查询检查源数据库的大小以及要将其还原到的当前目标。
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_namehttps://stackoverflow.com/questions/66252327
复制相似问题