国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

MySQL數(shù)據(jù)導(dǎo)入動態(tài)SQL和PROCEDURE 結(jié)合

2019-11-08 20:45:43
字體:
供稿:網(wǎng)友

最近接手了公司另一個項目的數(shù)據(jù)庫,負(fù)責(zé)數(shù)據(jù)庫的重構(gòu),不可避免的要進行數(shù)據(jù)的導(dǎo)入導(dǎo)出,于是利用查詢生成臨時表就起了大的作用 1.要將與公司表相關(guān)聯(lián)的表存成ID,之前表里面存的是公司名稱,大量的漢字不利于檢索。 首先做好原數(shù)據(jù)庫的備份,備份很重要,備份很重要 1. 生成臨時表 2.在臨時表里面做更新 3.截斷原來的表修改字段名 4.將修改后的數(shù)據(jù)導(dǎo)入新表

create table test SELECT * from 要更新的表名;UPDATE test aLEFT JOIN e_company b ON b.`name` = a.company_nameSET a.company_name = b.idinsert into 要更新的表名 SELECT * from test

如果你有很多張表表的話這樣就比較麻煩 ,可以考慮把表名當(dāng)做變量來寫成一個動態(tài)SQL結(jié)合存儲過程 這樣只需要傳參數(shù)就可以了

需要注意的是,動態(tài)SQL每次只能執(zhí)行一個SQL語句,所以你要將SQL分開來進行concat處理,在執(zhí)行 否則就會報錯。 下面以yy表為列

create PROCEDURE tests(tableName varchar(20)) BEGIN set @tableNames = CONCAT(tableName); set @sqlStr = CONCAT('drop table if EXISTS test;'); prepare stmt from @sqlStr; execute stmt ; deallocate prepare stmt; set @sqlStr = CONCAT('create table test select * from ',@tableNames,';'); prepare stmt from @sqlStr; execute stmt ; deallocate prepare stmt; set @sqlStr = CONCAT('update test a LEFT JOIN e_company b ON b.`name`= a.company_name SET a.company_name = b.id;'); prepare stmt from @sqlStr; execute stmt ; deallocate prepare stmt; set @sqlStr = CONCAT('truncate table ',@tableNames,';'); prepare stmt from @sqlStr; execute stmt ; deallocate prepare stmt; set @sqlStr = CONCAT('insert into ',@tableNames,' select * from test'); prepare stmt from @sqlStr; execute stmt ; deallocate prepare stmt;END;
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 金平| 醴陵市| 天津市| 佳木斯市| 壶关县| 乐清市| 大名县| 平塘县| 临沭县| 东港市| 张北县| 宝兴县| 陇南市| 伊宁县| 光山县| 平湖市| 宁阳县| 宜宾市| 茌平县| 西和县| 彭泽县| 若尔盖县| 岳西县| 平遥县| 马龙县| 迁安市| 四平市| 合水县| 盐津县| 黄石市| 阳江市| 嫩江县| 乐清市| 贵州省| 鹰潭市| 忻城县| 济源市| 谢通门县| 浮梁县| 开封市| 新乡市|