我有一个名为: nyummy
的数据库模式和一个名为 cimory
的表:
create table nyummy.cimory (
id numeric(10,0) not null,
name character varying(60) not null,
city character varying(50) not null,
CONSTRAINT cimory_pkey PRIMARY KEY (id)
);
我想导出 cimory
表's data as insert SQL script file. However, I only want to export records/data where the city is equal to ' tokyo'(假设城市数据都是小写的) .
怎么做?
解决方案是否在免费的GUI工具或命令行中无关紧要(尽管GUI工具解决方案更好) . 我曾尝试过pgAdmin III,但我找不到这样做的选择 .
9 回答
使用要导出的集创建表,然后使用命令行实用程序pg_dump导出到文件:
--column-inserts
将转储为带有列名的insert命令 .--data-only
不要转储架构 .如下所述,无论何时需要新的导出,创建视图而不是表都将避免创建表 .
对于 data-only export 使用COPY .
你得到的文件每行有一个表行作为纯文本(不是
INSERT
命令),它更小更快:Import 与具有相同结构的另一个表相同:
COPY
写入和读取服务器本地的文件,不像客户端程序,如pg_dump
或psql
,它们读取和写入客户端本地的文件 . 如果两者都在同一台机器上运行,那么它并不重要,但它适用于远程连接 .还有\copy command of psql:
这是 easy and fast 方式 export a table to a script with pgAdmin 手动 without extra installations :
右键单击目标表并选择"Backup" .
选择用于存储备份的文件路径 . 格式选择"Plain" .
打开底部的标签"Dump Options #2"并检查"Use Column Inserts" .
单击“备份”按钮 .
如果使用文本阅读器(例如记事本)打开生成的文件,则会获得一个脚本来创建整个表 . 从那里你可以简单地复制生成的INSERT语句 .
这个方法也适用于制作export_table的技术,如@Clodoaldo Neto的回答所示 .
SQL Workbench有这样的功能 .
运行查询后,右键单击查询结果并选择“将数据复制为SQL> SQL插入”
对于我的用例,我能够简单地管道grep .
您可以使用指定记录查看表,然后转储sql文件
我刚刚敲了一个快速的程序来做这件事 . 它只适用于单行,因此我创建一个临时视图,只选择我想要的行,然后将pg_temp.temp_view替换为我想要插入的实际表 .
这样调用:
我没有对注射攻击进行测试,如果quote_literal调用不够,请告诉我 .
此外,它仅适用于可以简单地转换为:: text并再次返回的列 .
这也适用于Greenplum,但我想不出为什么它不适用于Postgres,CMIIW .
我尝试以不同的方式编写一个基于@PhilHibbs代码的程序 . 请看看并测试 .
然后 :
在我的postgres 9.1上测试,带有混合字段数据类型的表(text,double,int,没有时区的时间戳等) .
这就是为什么需要TEXT类型的CAST . 我的测试正确运行大约9M行,看起来它在运行18分钟之前就失败了 .
ps:我在WEB上找到了mysql的等价物 .
你有没有尝试过使用
" EXECUTE QUERY WRITE RESULT TO FILE "
选项执行查询的pgadmin它只导出数据,否则尝试
-t选项用于==>仅转储匹配表的表(或视图或序列),refer