日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

c mssql mysql_mssql与mysql 数据迁移

發(fā)布時間:2025/3/15 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c mssql mysql_mssql与mysql 数据迁移 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

概要:

mssql向mysql遷移的實例,所要用到的工具bcp和load data local infile。

由于訂單記錄的數(shù)據(jù)是存放在mssql服務(wù)器上的,而項目需求把數(shù)據(jù)遷移到mysql server,存在的問題mssql和mysql訂單表結(jié)構(gòu)不同,所以不能直接導(dǎo)入到mysql中的訂單表里面。

解決思路,首先,在mysql數(shù)據(jù)庫新建一張與mssql中訂單表結(jié)構(gòu)一樣的表,在mssql上利用bcp工具導(dǎo)出數(shù)據(jù)為csv,然后把導(dǎo)出csv數(shù)據(jù)上傳到mysql服務(wù)器上用load data命令行導(dǎo)入表;最后通過存儲過程查詢循環(huán)insert到目標表中。

導(dǎo)出表結(jié)構(gòu)并且修改后,在mysql服務(wù)器上創(chuàng)建同樣結(jié)構(gòu)的表:(以下圖為:mssql導(dǎo)出表結(jié)構(gòu)圖)

以下是導(dǎo)出csv相關(guān)sql語句

1 usedata_trade;2 Go

3

4 SP_CONFIGURE'show advanced options',1

5 RECONFIGURE

6 Go

7 SP_CONFIGURE 'xp_cmdshell',1

8 RECONFIGURE

9 Go

10

11 EXEC master..xp_cmdshell 'BCP data_trade.do.t_trade OUT D:\trade.csv -c -t "jxfield" -T -r "jxrowend"'

由于訂單表中的字段比較復(fù)雜,字段中包含了逗號,換行和回車等符號,所以從定義的了字段分隔符和行的終止符,分別用 -t -r兩個參數(shù)定義。

去掉字段中的空號逗號換行符和回車;

$ cat a.csv | tr -d ' ,^' | sed 's/jxrowend/$^/g' | tr '^' '\n' >b.csv

將導(dǎo)出的csv文件上傳到mysql服務(wù)器上的/tmp目錄下并c,然后執(zhí)行

load data local infile '/tmp/trade.csv'

into table `t_trade`

character set gbk

fields terminated by 'jxfield'

optionally enclosed by '"'

escaped by '"'

lines terminated by 'jxrowend';

查詢循環(huán)插入到目標表中代碼如下:

1 DELIMITER ;;2

3 DROP PROCEDURE IF EXISTS`update_trade`;;4 CREATE PROCEDURE`update_trade` ()5 BEGIN

6 --需要定義接收游標數(shù)據(jù)的變量

7 DECLARE astorage_id varchar(40);8 DECLARE atid varchar(40);9 DECLARE apro_detail_code varchar(40);10 DECLARE apro_name varchar(255);11 DECLARE aspecification varchar(255);12 DECLARE abarcode varchar(40);13 DECLARE acombine_barcode varchar(40);14 DECLARE aiscancel varchar(40);15 DECLARE aisscheduled varchar(40);16 DECLARE astock_situation varchar(40);17 DECLARE aisbook_pro varchar(40);18 DECLARE aiscombination varchar(40);19 DECLARE aisgifts varchar(40);20 DECLARE agift_num int(20);21 DECLARE abook_storage varchar(40);22 DECLARE apro_num varchar(40);23 DECLARE asend_num varchar(40);24 DECLARE arefund_num varchar(40);25 DECLARE arefund_renum varchar(40);26 DECLARE ainspection_num varchar(40);27 DECLARE atimeinventory varchar(40);28 DECLARE acost_price decimal(20,2);29 DECLARE asell_price decimal(20,2);30 DECLARE aaverage_price decimal(20,2);31 DECLARE aoriginal_price decimal(20,2);32 DECLARE asys_price decimal(20,2);33 DECLARE aferght decimal(20,2);34 DECLARE aitem_discountfee decimal(20,2);35 DECLARE ainspection_time varchar(40);36 DECLARE aweight varchar(40);37 DECLARE ashopid varchar(40);38 DECLARE aout_tid varchar(40);39 DECLARE aout_proid varchar(40);40 DECLARE aout_prosku varchar(40);41 DECLARE aproexplain varchar(40);42 DECLARE abuyer_memo varchar(40);43 DECLARE aseller_remark varchar(255);44 DECLARE adistributer varchar(40);45 DECLARE adistribut_time varchar(40);46 DECLARE asecond_barcode varchar(40);47 DECLARE aproduct_no varchar(40);48 DECLARE abrand_number varchar(40);49 DECLARE abrand_name varchar(40);50 DECLARE abook_inventory int(40);51 DECLARE aproduct_specification varchar(255);52 DECLARE adiscount_amount decimal(20,2);53 DECLARE acredit_amount decimal(20,2);54 DECLARE aMD5_encryption varchar(40);55

56

57

58 --遍歷數(shù)據(jù)結(jié)束標志

59 DECLARE done INT DEFAULTFALSE;60 --游標

61 DECLARE cur CURSOR FOR SELECT `AC0018`,`TC0013`,`EC0155`,`EC0123`,`ac2037`,`TC0087`,`AI0033`,`EI0734`,`AI0021`,`AM0024`,`TM0030`,`AM0100`,`EQ0147`,`AD0001`,`TC0108`,`EC0155`,`AI0032` FROM `edb_item` order by `AQ2520` asc where `AQ2520`

63 --將結(jié)束標志綁定到游標

64 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done =TRUE;65 --打開游標

66 OPENcur;67

68 --開始循環(huán)

69 read_loop: LOOP70 --提取游標里的數(shù)據(jù),這里只有一個,多個的話也一樣;

71 FETCH cur INTOatid,apro_detail_code,apro_name,aspecification,abarcode,astock_situation,agift_num,apro_num,arefund_renum,asell_price,aoriginal_price,aitem_discountfee,ainspection_time,aweight,aout_tid,aproexplain,ainspection_num;72 --聲明結(jié)束的時候

73 IF done THEN

74 LEAVE read_loop;75 END IF;76 --這里做你想做的循環(huán)的事件

77 --IF ainspection_num is null THEN SET ainspection_num=0;END IF;

78 SET astorage_id=null;79 SET acombine_barcode=null;80 SET aiscancel=null;81 SET aisscheduled=null;82 SET aisbook_pro=null;83 SET aiscombination=null;84 SET aisgifts=null;85 SET abook_storage=null;86 SET asend_num=null;87 SET arefund_num=null;88 SET atimeinventory=null;89 SET acost_price=null;90 SET aaverage_price=null;91 SET asys_price=null;92 SET aferght=null;93 SET ashopid=null;94 SET aout_proid=null;95 SET aout_prosku=null;96 SET abuyer_memo=null;97 SET aseller_remark=null;98 SET adistributer=null;99 SET adistribut_time=null;100 SET asecond_barcode=null;101 SET aproduct_no=apro_detail_code;102 SET abrand_number=null;103 SET abrand_name=null;104 SET abook_inventory=null;105 SET aproduct_specification=null;106 SET adiscount_amount=null;107 SET acredit_amount=null;108 SET aMD5_encryption=null;109

110 insert into `t_trade_array`(storage_id,tid,pro_detail_code,pro_name,specification,barcode,combine_barcode,iscancel,isscheduled,stock_situation,isbook_pro,iscombination,isgifts,gift_num,book_storage,pro_num,send_num,refund_num,refund_renum,inspection_num,timeinventory,cost_price,sell_price,average_price,original_price,sys_price,ferght,item_discountfee,inspection_time,weight,shopid,out_tid,out_proid,out_prosku,proexplain,buyer_memo,seller_remark,distributer,distribut_time,second_barcode,product_no,brand_number,brand_name,book_inventory,product_specification,discount_amount,credit_amount,MD5_encryption) values(astorage_id,atid,apro_detail_code,apro_name,aspecification,abarcode,acombine_barcode,aiscancel,aisscheduled,astock_situation,aisbook_pro,aiscombination,aisgifts,agift_num,abook_storage,apro_num,asend_num,arefund_num,arefund_renum,ainspection_num,atimeinventory,acost_price,asell_price,aaverage_price,aoriginal_price,asys_price,aferght,aitem_discountfee,ainspection_time,aweight,ashopid,aout_tid,aout_proid,aout_prosku,aproexplain,abuyer_memo,aseller_remark,adistributer,adistribut_time,asecond_barcode,aproduct_no,abrand_number,abrand_name,abook_inventory,aproduct_specification,adiscount_amount,acredit_amount,aMD5_encryption);111

112 ENDLOOP;113 --關(guān)閉游標

114 CLOSEcur;115

116 END;;117 DELIMITER ;

若在存儲過程出現(xiàn)錯誤,相關(guān)處理可以參考continue handler;

相關(guān)參考博文:

總結(jié)

以上是生活随笔為你收集整理的c mssql mysql_mssql与mysql 数据迁移的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。