2010-07-12 63 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

相关问题