我有一个使用 PHPPgadmin 的 PostgreSQL 备份,使用 Export > Copy (而不是 Copy > SQL,这实际上是我需要的)。
文件包含这样的条目:
COPY tablename(id, field) FROM stdin;
...
如何将此文件转换为 SQL 格式?
INSERT INTO tablename...
我想使用 Pgadmin 使用执行 SQL 命令导入此文件。
我有一个使用 PHPPgadmin 的 PostgreSQL 备份,使用 Export > Copy (而不是 Copy > SQL,这实际上是我需要的)。
文件包含这样的条目:
COPY tablename(id, field) FROM stdin;
...
如何将此文件转换为 SQL 格式?
INSERT INTO tablename...
我想使用 Pgadmin 使用执行 SQL 命令导入此文件。
我不知道可以将“COPY”转换为“INSERT”语句的方法或工具。
但是使用“pg_dump”命令行工具,您可以使用“INSERT”而不是“COPY”语句创建数据库转储文件。简单地使用“--column-inserts”参数(可能是“--inserts”也可以)。
编辑:
你可以做的是:
将您的数据库转储文件导入新创建的数据库
psql -U <dbuser> <database> < dump.sql
并使用该数据库中的“--column-inserts”创建一个 postgres 转储
pg_dump --column-inserts -U <dbuser> <database> > dumpWithInserts.sql
您不能将其转换为 SQL 格式(至少不能直接转换)。
如果您无法重新导出,那么更简单的选择是绕过phpPgadmin,登录您的服务器并运行类似
cat [yourdump.sql] | psql [your connections args]
如果您没有对服务器的 shell 访问权限,您可以尝试上传文件(通过 SFTP 或 FTP)并通过 phpPgAdmin 加载它"COPY <table> FROM <path_to_file_on_server>"
。但是如果有很多表,你必须(我相信)拆分文件并一次做一个。
您可以尝试COPY FROM PROGRAM语法,自 PostgreSQL 9.3 起可用
例如:
COPY tbl_customers (id, address_id, insurance_id, fullname, secret_code ...) FROM PROGRAM 'echo "1 2 \N Ivan Ivanov 42 ..."'