2010-07-12 60 views
0

我已經將.csv文件加載到數據集中。 csv文件(有幾百行)格式如下;如何在C#中的數據集中新創建的列中插入數據#

"UCPTlogTime","UCPTpointName","UCPTvalue","UCPTunit" 
2010-07-05T11:08:07.390+08:00,"Net/LON/wattnode1/VirtFb/nvoCurrent[0]","0.128767","Amperes" 
2010-07-05T11:08:10.720+08:00,"Net/LON/wattnode1/VirtFb/nvoPower[0]","28.90336","Watts" 
2010-07-05T11:08:11.680+08:00,"Net/LON/wattnode1/VirtFb/nvoCurrent[0]","0.128767","Amperes" 
2010-07-05T11:08:18.830+08:00,"Net/LON/wattnode1/VirtFb/nvoPower[0]","34.48953","Watts" 

正如你所看到的,在UCPTvalue列中,保存了兩種不同類型的數據。 我想要做的是在更新所有這些數據的遠程服務器之前,我想單獨列中的Amperes數據和Watts數據。是否有任何C#代碼可以在數據集中創建新列,並使用現有列中的數據進行設置?

回答

0

我不會使用數據集,我自己。我會批量將其加載到臨時數據庫表中,然後更新每個UCPT單元類型的相關表(換句話說,在存儲過程中完成所有操作)。

[編輯的更詳細]

創建一個名爲tmpUpdate新表。

SQLBulk將數據複製到其中。

然後運行一個存儲過程使用它,做多次更新,例如像

update liveTable set latestAmps=tempUpdate.UCPTvalue 
FROM liveAmpTable JOIN tempUpdate ON liveAmpTable.UCPTpointName=tempUpdate.UCPTpointName 
WHERE tempUpdate.UCPTunit='Amperes' 

update liveTable set latestWatts=tempUpdate.UCPTvalue 
FROM liveWattsTable JOIN tempUpdate ON liveWattsTable.UCPTpointName=tempUpdate.UCPTpointName 
WHERE tempUpdate.UCPTunit='Watts' 

truncate table tempUpdate --clear temp data 

這是假定只有一個用戶不更新在同一時間。

+0

嗨, 你能告訴我更多細節因爲我只是開始學習。目前,我正在使用dataTableReader,dataSet和SQLbulkCopy來更新遠程SQL數據庫。我最初的想法是在使用buldcopy發送到數據庫之前編輯表格。 – thinn 2010-07-13 01:02:54

+0

當然。上面添加。 – SteveCav 2010-07-13 03:28:07

+0

感謝史蒂夫, 我會努力。 Thinn – thinn 2010-07-13 05:05:46

相關問題