有MySQL有pgsql怎么同时查询_mysql和pgsql夸库查询插入

在需要从MySQL中引用pgsql表数据进行垮库操作时,除了使用ETL工具,本文介绍了一种代码实现的方法。通过构建特定的SQL语句,实现了在MySQL中插入从pgsql查询得到的数据。
摘要由CSDN通过智能技术生成

当mysql中用到pgsql表的垮库操作时,首先可以使用ETL是可以解决的,今天学习了一种代码处理方式解决方案。

insert_sql = <

insert into #{audience_attributes_table}

select opxpid, "c", array_to_string(jx_array_sort(madlib.array_agg(pretargeting_id)), ',')

from (

select mt.opxpid as opxpid, ap.pretargeting_id as pretargeting_id

from #{master_table} mt

inner join

#{map_audiences_pretargetings}

on mt.hash_value = ap.audience_id

where mt.hash_key = 'aids'

and mt.hash_value in (#{aids.uniq.join(",")})

group by 1,2

) m

group by 1, 2;

sql

#拼装查询结果。

def map_audiences_pretargetings

pids = Pretargeting.find(:all, :select => :id, :conditions => ["start_date <= ? AND end_date >= ? AND approval_status = ?", Date.today + 3.days, Date.today - 3.days, true])

adjustments = AudiencesPretargeting.find_all_by_pretargeting_id(pids.collect(&:id)).collect{|ad_pg| [ad_pg.pretargeting_id,ad_pg.audience_id]}

adjustments_flattened = adjustments.map{ |adj| ",(#{adj[0]}, #{adj[1]})" }

"(

VALUES

(0, 0)

#{adjustments_flattened.join}

) AS ap (pretargeting_id, audience_id)"

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值