文档章节

如何写一个pg函数,可以把任意一个表生成insert语句

吕不为
 吕不为
发布于 2016/12/08 21:43
字数 170
阅读 36
收藏 0

看到stackoverflow有人问,如何给任意一个表生成insert语句,为了方便把数据从一个测试库转到另一个测试库上,为此,我写了一个小函数,没有做严格的测试,有兴趣的可以拿来试试。

create language plpythonu;
create or replace function geninsert1(_table text)
returns setof  text
as
$$
def isstr(v):
  if v == None:
    return 'NULL'
  elif isinstance(v,str):
    return "'%s'" % v
  else:
    return str(v)
    
alist=[]
result = plpy.execute("select * from "+_table)
for x in result:
  fieldlist=x.keys()
  fields=','.join(fieldlist)
  fvalues=','.join([isstr(x[y]) or 'NULL' for y in fieldlist])
  sql="insert into %s (%s) VALUES(%s)" % (_table,fields,fvalues)
  alist.append(sql)
return alist
return ''
$$
language plpythonu;
select * from geninsert1('mytable')

© 著作权归作者所有

共有 人打赏支持
吕不为
粉丝 4
博文 43
码字总数 15586
作品 0
海淀
私信 提问
PgSQL · 特性分析 · 逻辑导出pg_dump分析

概述 PostgreSQL本身提供了逻辑导出工具pgdumpall和pgdump,其中pgdumpall导出所有的数据库,pgdump导出单个数据库,两个工具的用法和参数不再详细介绍,本文从代码层面上对此过程进行分析。...

卓刀
07/10
0
0
PostgreSQL数据库和与mysql的性能比

如果很粗略地观察 PostgreSQL,会觉得这个数据库系统和其它数据库很类似。因为 PostgreSQL 使用 SQL 语言来在执行资料的查询。这些资料通过连外键联系在一起,以一系列表格的形式存在。Postg...

谢思华
2013/11/15
0
0
写一个“特殊”的查询构造器 - (七、DML 语句、事务)

查询语句 (DQL) 的构造功能开发完毕,我们再给查询构造器增加一些对 DML (Data Manipulation Language) 语句的支持,如简单的 insert、update、delete 操作。 insert 我们先回顾下 PDO 原生的...

MrQ被抢注了
05/23
0
0
PostgreSQL用户应掌握的高级SQL特性(有书送)

作者介绍 谭峰,网名francs,中国开源软件推进联盟PostgreSQL分会特聘专家,《PostgreSQL实战》作者之一,《PostgreSQL 9 Administration Cookbook》译者之一。现就职于浙江移动负责应用上云...

DBAplus社群
08/21
0
0
Ubuntu下PostgreSQL数据库集群(PL/Proxy)配置方法

数据库集群:N个数据库堆到一起,找一个当个头头,管理所有的数据库并让它们协同工作。当然了,要不要找个头头,找几个头头,如何协作等等问题这些都可以商量和约定,因此,也就形成了不同的...

hl_linux
2012/07/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

重磅!亚洲诚信实力斩获:“2018 DigiCert/Symantec 年度最佳创新合作伙伴”大奖

2018年11月13日-16日,全球顶级数字证书厂商,DigiCert/Symantec亚太区圆桌会议(Asia Partner Roundtable 2018)在日本大阪隆重召开。 亚洲诚信作为DigiCert/Symantec亚太区白金战略合作伙伴和...

亚洲诚信
21分钟前
2
0
始于阿里,回归社区:阿里8个项目进入CNCF云原生全景图

摘要: 一群技术理想主义者,与太平洋另一边的技术高手们正面PK,在这场躲不开的战役中,一起认真一把。 破土而出的生命力,源自理想主义者心底对技术的信念。 云原生技术正席卷全球,云原生...

阿里云官方博客
28分钟前
3
0
修改this指向(bind、call 和 apply)

一、bind bind 的其中一个用法就是:绑定函数,使其无论怎么样调用都用相同的 this 示例: var obj = { getThis: function() { console.log(this); }};obj.getThis()...

文文1
今天
1
0
WSL安装JDK8

下载地址 JDK_URL https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html UNLIMITED_STRENGTH_URL https://www.oracle.com/technetwork/java/javase/down......

terwergreen
今天
4
0
sparkStreaming基本概念

概述 Spark Streaming 是 Spark Core API 的扩展, 它支持弹性的, 高吞吐的, 容错的实时数据流的处理. 数据可以通过多种数据源获取, 例如 Kafka, Flume, Kinesis 以及 TCP sockets, 也可以通过...

freeli
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部