如何写一个pg函数,可以把任意一个表生成insert语句
如何写一个pg函数,可以把任意一个表生成insert语句
吕不为 发表于1年前
如何写一个pg函数,可以把任意一个表生成insert语句
  • 发表于 1年前
  • 阅读 27
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

看到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')

共有 人打赏支持
粉丝 5
博文 33
码字总数 12633
×
吕不为
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: