91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL 拼接Insert批量同步異構表數據

發布時間:2020-08-18 01:45:12 來源:ITPUB博客 閱讀:214 作者:靜以致遠√團團 欄目:MySQL數據庫
需求:線上部分表數據需要同步到測試環境,但是測試環境表結構又有變更,額外添加需求:原線上和測試都有的表字段同步,其他不同的字段不用同步,置為NULL即可。
思路:首先導出線上表數據到測試的test庫,考慮到兩邊表結構有變更,只能使用insert tab1(xx,xx) select xx,xx from tab1的方式插入,表比較多,手動對比所有字段工作量比較大,準備采用SQL拼接的方式拼接出插入的SQL去執行
實現過程:
1、將目標端要同步的數據庫導入到測試端的test下面
2、創建同步信息表,并整理對應關系插入數據:
CREATE TABLE `z_tab_sync` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`from_db` VARCHAR(100) DEFAULT NULL,
`from_tab` VARCHAR(100) DEFAULT NULL,
`to_db` VARCHAR(100) DEFAULT NULL,
`to_tab` VARCHAR(100) DEFAULT NULL,
KEY `id` (`id`)
) ENGINE=INNODB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8

其中from_tab是目標端的表,to_tab是測試端的表
id from_db from_tab to_db to_tab
------ ------- --------------------- ---------- -------------------------
1 test business_history tenancy_db business_history
2 test data_number tenancy_db data_number
3 test house tenancy_db house
4 test house_process tenancy_db house_process
5 test landlord tenancy_db landlord
6 test landlord_process tenancy_db landlord_process
7 test order_info tenancy_db decorate_order_info
8 test order_process tenancy_db decorate_order_process
9 test payment_record_stream tenancy_db decorate_payment_record
10 test repayment_plan tenancy_db decorate_repayment_plan
11 test shop_area tenancy_db shop_area

使用如下SQL拼接出要執行的SQL
SELECT CONCAT('insert into `',b.to_tab,'`(',GROUP_CONCAT(CONCAT('`',a.column_name,'`')),') select ',GROUP_CONCAT(CONCAT('`',a.column_name,'`')),' from ',a.from_tab,';')
FROM
(
SELECT
ts.id,
ts.from_tab,
cl.column_name
FROM
information_schema.`COLUMNS` cl
LEFT JOIN test.`z_tab_sync` ts
ON cl.table_name = ts.from_tab
WHERE table_schema = 'test'
AND ts.id IS NOT NULL ) a,
(
SELECT
ts.id,
ts.to_tab,
cl.column_name
FROM
information_schema.`COLUMNS` cl
LEFT JOIN test.`z_tab_sync` ts
ON cl.table_name = ts.to_tab
WHERE table_schema = 'tenancy_db'
AND ts.id IS NOT NULL ) b
WHERE a.id = b.id AND a.column_name = b.column_name
GROUP BY a.id;

得到的SQL形如
INSERT INTO `business_history` (
`settlementId`,
`businessType`,
`updateTime`,
`status`,
`createTime`,
`id`
)
SELECT
`settlementId`,
`businessType`,
`updateTime`,
`status`,
`createTime`,
`id`
FROM
business_history ;
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉峪关市| 遂平县| 都江堰市| 昭平县| 丰城市| 舟山市| 措美县| 百色市| 夏津县| 车致| 泸水县| 于田县| 阿荣旗| 博客| 泌阳县| 浮山县| 沈丘县| 且末县| 砀山县| 延川县| 平顺县| 南丹县| 峨眉山市| 河北区| 嘉定区| 商水县| 临高县| 安达市| 闽清县| 吉首市| 南漳县| 湖北省| 莱阳市| 宜都市| 阿拉善右旗| 瓮安县| 旺苍县| 樟树市| 集贤县| 祥云县| 怀集县|