VB.NET LumenWorks CsvReader过滤和SqlBulkCopy

时间:2017-03-06 17:44:21

标签: sql-server vb.net csv filtering

我目前正在处理大型csv文本文件,并使用SqlBulkCopy将内容插入到单个数据库中。现在需求发生了变化,我现在必须将csv和批量复制的内容过滤到多个数据库中。我会尽量保持这些例子的简单。

示例1.要求。将年份= 2016的MyCSVFile1.txt中的行插入到Sql数据库1中,将year = 2017中的行插入到Sql数据库2中。我们显然有两个连接字符串,但是你知道我想要做什么。记住性能,因为一些文件包含许多列超过10,000行的列!

** MyCSVFile1.txt(Id,Date)的内容** Id在这里是唯一的。
“000012345”,2016-12-01 00:00:00
“000012346”,2016-12-15 00:00:00
“000012347”,2017-01-01 00:00:00
“000012348”,2017-01-15 00:00:00

' My current CsvReader / SqlBulkCopy with no filtering.
Using reader As New StreamReader("MyCSVFile1.txt")
    Dim csvReader As New CsvReader(reader, False)
    Dim copy As New SqlClient.SqlBulkCopy(objConnection, SqlClient.SqlBulkCopyOptions.KeepIdentity, objSQLTransaction)
    copy.DestinationTableName = strTableName
    copy.WriteToServer(csvReader)
    objSQLTransaction.Commit()
End Using

示例2.要求。这个可能会变得棘手。我们需要保留两个集合。集合1具有来自MyCSVFile1.txt的所有Id,其中year = 2016,而Collection 2具有所有Id的年份= 2017.将MyCSVFile2.txt中的行插入到Sql数据库1中,其中Id为在Collection 2中存在于Sql数据库2中。

** MyCSVFile2.txt(Id,Item)的内容**这里Id不是唯一的。

“000012345”,“项目350”
“000012345”,“项目420”
“000012345”,“项目124”
“000012346”,“项目798”
“000012348”,“项目425”
“000012348”,“项目877”

因此,它与示例1中的类似,我们将添加一个where子句,而在示例2中添加一个in运算符。任何帮助,将不胜感激! \ m / \ m /

0 个答案:

没有答案