SQL:将备份文件从复制格式转换为插入格式

时间:2010-05-13 13:20:57

标签: sql postgresql phppgadmin

我使用Export>使用PHPPgadmin进行了PostgreSQL备份。复制(而不是复制> SQL,这实际上是我需要的)。

文件包含以下条目:

COPY tablename(id, field) FROM stdin;
...

如何将此文件转换为SQL格式?

INSERT INTO tablename...

我想使用Pgadmin来使用execute SQL命令导入此文件。

4 个答案:

答案 0 :(得分:3)

您无法将其转换为SQL格式(至少不能直接转换)。

如果你无法重新导出,那么更简单的选择是绕过 phpPgadmin , 登录您的服务器并运行类似

的内容
cat [yourdump.sql]  | psql [your connections args]

如果您没有对服务器的shell访问权限,您可以尝试上传文件(通过SFTP或FTP)并使用"COPY <table> FROM <path_to_file_on_server>"加载到phpPgAdmin。但是如果有很多表,你必须(我相信)拆分文件并一次做一个。

http://phppgadmin.sourceforge.net/?page=faq

答案 1 :(得分:2)

我不知道可以将“COPY”转换为“INSERT”语句的方法或工具。

但是使用“pg_dump”命令行工具,您可以使用“INSERT”而不是“COPY”语句创建数据库转储文件。简单使用“--column-inserts”参数(可能是“--inserts”也适合你)。

修改

你能做的是:

  1. 在本地计算机上创建新的postgres数据库
  2. 将数据库转储文件导入新创建的数据库

    psql -U <dbuser> <database> < dump.sql
    
  3. 使用该数据库中的“--column-inserts”创建一个postgres转储

    pg_dump --column-inserts -U <dbuser> <database> > dumpWithInserts.sql
    

答案 2 :(得分:1)

您可以尝试从程序中复制语法,自PostgreSQL 9.3起可用

例如: COPY tbl_customers (id, address_id, insurance_id, fullname, secret_code ...) FROM PROGRAM 'echo "1 2 \N Ivan Ivanov 42 ..."'

答案 3 :(得分:0)

我已经编写了一个工具来将copy-from dump转换为insert dump:

https://github.com/freddez/pg-dump2insert

您可以使用它在另一个数据库中加载转储或搜索特定的已删除值,例如。