<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      SQL Server數據寫到KingbaseES的實踐

      中間庫是oracle的,通過sqlserver的鏈接服務器訪問Oracle Provider for OLEDB讀寫Oracle數據庫,后來中間``庫改為人大金倉KingbaseES V8.6了,傳統關系數據庫寫到國產化數據庫往往只能通過odbc(jdbc)等,但各廠家對odbc或jdbc的支持不一定都非常積極,造成實際使用中經常有很多問題。

      從人大金倉官網下載odbc驅動,在sqlserver中建立鏈接服務器,但是遇到了一個問題:select、delete沒問題,insert和update都出現 鏈接服務器 SQLExtendedFetch unable due to the connection lost 錯誤,只好換了思路,通過鏈接服務器,將kingbase中已有記錄的主鍵記錄到本地sqlserver庫,sqlserver建立視圖得到待插入的記錄,以及將需要更改的記錄寫到sqlserver臨時表中,再通過代碼處理插入和更新工作。

      用到的幾個工具:

      • 1、freesql。因kingbase提供.net驅動,相對具有更高的寫入性能和穩定性,freesql對國產數據庫做了很多支持性工作
      • 2、AutoMapper。通過AutoMapper快速將獲取到的實體轉換成要插入的Kingbase實體
      • 3、quartz.net。任務調度

      因為各個表的插入和更新除了表明不一樣,其他方式都一樣,充分利用泛型將代碼模式化

      從sqlserver獲取數據,寫到kingbase

              public void WriteData2Kingbase<T,Tr>(IFreeSql fsqlMssql,IFreeSql fsqlKingbase,IMapper mapper) where T:class where Tr : class
              {
                  List<T> origin = fsqlMssql.Select<T>().ToList();
                  List<Tr> target = mapper.Map<List<Tr>>(origin);
                  int cnt = fsqlKingbase.Insert(target).ExecuteAffrows();
                  Logger.Error($"插入{nameof(Tr)}:{cnt}行");
              }
      

      從sqlserver獲取要更新的記錄,批量更新到kingbase

              public void UpdateData2Kingbase<T, Tr>(IFreeSql fsqlMssql, IFreeSql fsqlKingbase, IMapper mapper,int state) where T : class,IOrignEntity where Tr : class, ITargetEntity
              {
                  List<long> codes = fsqlMssql.Select<T>().ToList(a => a.CODE);
                  if (codes != null && codes.Count > 0)
                  {
                      int cnt=fsqlKingbase.Update<Tr>()
                          .Set(a => a.STATE, state)
                          .Set(a => a.I_FLAG, 0)
                          .Set(a => a.I_TYPE, "0")
                          .Set(a => a.I_TIME, DateTime.Now)
                          .Where(a => codes.Contains(a.CODE))
                          .ExecuteAffrows();
                      Logger.Error($"更新{nameof(Tr)}:{cnt}行");
                  }
                  fsqlMssql.Delete<T>().Where("1=1").ExecuteAffrows();
              }
      

      AutoMapper和quartz.net網上相關使用說明非常多。需要注意的是從nuget獲取freesql.provider.kingbase時,kndp所需的幾個dll沒有自動過來,需要從人大金倉官網kndp的驅動中拷貝到項目中

      posted @ 2023-02-24 16:02  GIS民工  閱讀(365)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品黄色一区二区三区| 九九久久精品国产免费看小说| 不卡一区二区国产在线| 麻豆国产va免费精品高清在线| 国产中文三级全黄| 在线观看国产成人av天堂| 国产资源精品中文字幕| 又爽又黄又无遮挡的激情视频| 人妻内射一区二区在线视频| 日本欧美大码a在线观看| 东京热高清无码精品| 成人av专区精品无码国产 | 九九热在线免费视频精品| 中文字幕av一区二区| 饥渴的熟妇张开腿呻吟视频| 日韩乱码视频一区二区三区| 中文字幕理伦午夜福利片| 人妻蜜臀久久av不卡| 亚洲av国产成人精品区| 99精品国产综合久久久久五月天| 日韩av综合中文字幕| 国产人成视频在线观看| 国产精品播放一区二区三区| 国产中文字幕在线精品| 凉山| 亚洲男女羞羞无遮挡久久丫| 精品偷拍一区二区三区| 国产精品夜夜春夜夜爽久久小说 | 亚洲特黄色片一区二区三区| 最新亚洲人成网站在线观看| 亚洲中文字幕无码日韩精品| 亚洲乱亚洲乱妇50p| 国产95在线 | 欧美| 成人自拍短视频午夜福利| 婷婷色香五月综合缴缴情香蕉| 国产精品久久久久7777| 亚洲一区av在线观看| 国产普通话对白刺激| 国产喷水1区2区3区咪咪爱AV| 精品偷自拍另类精品在线 | 亚洲成人动漫av在线|