C#中使用DTS来导入数据及相关问题
向Sql 中導(dǎo)入Excel數(shù)據(jù)時(shí),使用MS SQL的DTS功能
可以很方便的導(dǎo)入,同時(shí)引用Dll文件,可以在程序中對(duì)導(dǎo)入過(guò)程進(jìn)行控制。
創(chuàng)建DTS包的過(guò)程如下:
1。在SQL企業(yè)管理器中,工具菜單選數(shù)據(jù)轉(zhuǎn)換服務(wù),導(dǎo)入數(shù)據(jù)
按照它的圖形化向?qū)崾?#xff0c;可以一步步創(chuàng)建一個(gè)DTS包,可以選擇保存在數(shù)據(jù)庫(kù)。
2。在SQL企業(yè)管理器中,左邊樹(shù)形結(jié)構(gòu)中選擇 數(shù)據(jù)轉(zhuǎn)化服務(wù),本地包中
可以新建一個(gè)包,同樣有圖形化的界面建立包:拖一個(gè)Excel數(shù)據(jù)源,拖一個(gè)Sql數(shù)據(jù)源
然后在任務(wù)里選 數(shù)據(jù)轉(zhuǎn)化任務(wù),原數(shù)據(jù)選Excel源,目的選SQL,然后在轉(zhuǎn)化的肩頭上選屬性
里面可以配置轉(zhuǎn)化過(guò)程。注意帶有主鍵的數(shù)據(jù)表,要把選項(xiàng)中 啟用標(biāo)示插入去掉
在C#里調(diào)用過(guò)程如下:
private void RunDTS()
2? {
3?? DTS.Package2Class package = new Package2Class();
4?? object p = null;
5?? package.LoadFromSQLServer("ws-victor-03", null, null, DTS.DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection,
6??? null, null, null, "TestDTS", ref p);
7?? package.Connections.Item(1).DataSource = "dts.XLS";
8?? package.Execute();
9? }
現(xiàn)在項(xiàng)目中遇到問(wèn)題:
1。插入數(shù)據(jù)時(shí)需要插入時(shí)間等Excel數(shù)據(jù)源中不存在的數(shù)據(jù)
2。Excel數(shù)據(jù)源中數(shù)據(jù)有的需要轉(zhuǎn)化,像數(shù)值形,導(dǎo)入后變成了1。23131E12等形式
3。插入數(shù)據(jù)時(shí)需要從Sql中查詢(xún)數(shù)據(jù)再插入
現(xiàn)在解決了第一條和第三條的一步分:
在上述配置 數(shù)據(jù)轉(zhuǎn)化任務(wù) 時(shí),
DTSDestination("ICC") = DTSSource("SIM Number");
??? DTSDestination("IMSI") = DTSSource("IMSI");
??? DTSDestination("PIN1") = DTSSource("PIN1");
??? DTSDestination("PUK1") = DTSSource("PUK1");
??? DTSDestination("PIN2") = DTSSource("PIN2");
??? DTSDestination("PUK2") = DTSSource("PUK2");
??? DTSDestination("MSISDN") = DTSSource("MSISDN");
??? DTSDestination("Fax") = DTSSource("Fax");
??? DTSDestination("Data") = DTSSource("Data");
??? DTSDestination("Barring") = DTSSource("Barring");
??? DTSDestination("MailFormID")? = DTSGlobalVariables("MailFromID").Value;
??? DTSDestination("ReceiveDate") = new Date().getYear() + "-" + new Date().getMonth() + "-" + new Date().getDate();
??? return(DTSTransformStat_OK);
其中,MailFromID為全局變量,添加方法為包 菜單 屬性里面選擇全局變量,可在C#中對(duì)其進(jìn)行賦值:
foreach(GlobalVariable global in package.GlobalVariables)
{
??? if (global.Name == "MailFromID") {
??????? package.GlobalVariables.Remove(global.Name);
??? }
}
package.GlobalVariables.AddGlobalVariable("MailFromID",MailFromID);
插入時(shí)間:
DTSDestination("ReceiveDate") = new Date().getYear() + "-" + new Date().getMonth() + "-" + new Date().getDate();
用javascript拼出來(lái)的 哈哈
插入數(shù)據(jù)時(shí)需要從Sql中查詢(xún)數(shù)據(jù)再插入:
在包里添加新的任務(wù):
執(zhí)行Sql任務(wù)
SELECT AddressList.*
FROM AddressList
WHERE (ID = ?)
然后配置 輸入和輸出參數(shù)
還剩下第2條沒(méi)搞定,希望這2天能搞定~
http://calmzeal.cnblogs.com/archive/2006/05/28/411499.html
轉(zhuǎn)載于:https://www.cnblogs.com/wubin264/archive/2008/12/19/1357940.html
總結(jié)
以上是生活随笔為你收集整理的C#中使用DTS来导入数据及相关问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 快速给pdf生成书签
- 下一篇: C#编程尽量使用接口(转)