C# 在VBA(Excel)中是否有类似于SqlBulkCopy的东西?
在C#中,我使用System.Data.SqlClient并执行类似于下面代码的操作。VB(Excel)中是否有类似的东西 我尝试将表格中的数据从Excel导出到SQL Server。我不能使用大容量插入,因为文件位于不同的计算机上,所以SQL无法读取它 因此,我还尝试在VB(Excel)中制作如下内容:C# 在VBA(Excel)中是否有类似于SqlBulkCopy的东西?,c#,sql,excel,vba,sqlbulkcopy,C#,Sql,Excel,Vba,Sqlbulkcopy,在C#中,我使用System.Data.SqlClient并执行类似于下面代码的操作。VB(Excel)中是否有类似的东西 我尝试将表格中的数据从Excel导出到SQL Server。我不能使用大容量插入,因为文件位于不同的计算机上,所以SQL无法读取它 因此,我还尝试在VB(Excel)中制作如下内容: 但是有数千行,每一行都由自己的INSERT语句插入SQL。这需要大量的时间和服务器资源。可以选择这个吗 SQL Server上是否安装了Microsoft.ACE.OLEDB.12.0提供程序
但是有数千行,每一行都由自己的INSERT语句插入SQL。这需要大量的时间和服务器资源。可以选择这个吗 SQL Server上是否安装了
Microsoft.ACE.OLEDB.12.0
提供程序?使用SQL查询将数据读入表中。您可以为其公开一个COM可见API,用C#编写-它将包含一个包含表元数据的数组、另一个包含数据的数组和一个连接字符串;从那里,C代码可以创建DataTable
,打开连接,并利用SqlBulkCopy
。ADODB比.NET 2.0(该类在.NET 1.1中不存在)早了好几年。如果您可以访问SQL Server Management Studio,还可以使用“导入数据”功能从Excel表中读取数据作为数据源。为什么不使用c版本?您似乎已经拥有了它,而且VisualStudio是免费的……您看过SSIS了吗?
{ static void InsertDataIntoSQLServerUsingSQLBulkCopy(DataTable csvData)
string connetionString = null;
SqlConnection cnn;
connetionString = System.Configuration.ConfigurationManager.ConnectionStrings["Import"].ConnectionString;
cnn = new SqlConnection(connetionString);
cnn.Open();
using (SqlBulkCopy s = new SqlBulkCopy(cnn))
{
s.DestinationTableName = "dbo.MyTable";
foreach (var column in csvData.Columns)
s.ColumnMappings.Add(column.ToString(), column.ToString());
s.WriteToServer(csvData);
}
Dim recSet As New ADODB.Recordset
Dim fieldIndex As Long
Dim rowIndex As Long
Set recSet = New ADODB.Recordset
Sqlstr = "Select * from MyTable"
recSet.Open Sqlstr, con, adOpenDynamic, adLockOptimistic
For rowIndex = 2 To 10000
recSet.AddNew
For fieldIndex = 1 To 9
recSet.Fields(Cells(1, fieldIndex).Value) = Replace(Sheets("MyTable").Cells(rowIndex, fieldIndex).Value, ",", ".")
Next fieldIndex
Next rowIndex
recSet.UpdateBatch