导入 Excel 到 SQL Server

19 浏览
0 Comments

导入 Excel 到 SQL Server

我正在尝试为用户建立一个导入工具,用于将Excel文件导入到SQL Server 2017中。\n我遇到了32位/64位的OLEDB提供程序的障碍。\n我正在使用32位的Microsoft Access前端,而SQL Server是64位的。你不能同时安装64位和32位的ACE OLEDB提供程序。微软甚至为这个问题建立了两个不同的导入/导出向导(一个用于32位,一个用于64位)。\n有没有人知道解决这个问题的方法,或者从Microsoft Access前端将Excel数据导入到SQL Server的替代方法,不依赖于OLEDB提供程序?(保存为文本文件不是一个选项,安装64位Office也不是一个选项)\n谢谢

0
0 Comments

问题:如何将Excel导入SQL Server?

原因:由于服务器和桌面机器通常已经安装了32位OFFICE驱动程序,因此通常不会出现问题。但如果出现64位和32位相关的问题,可以使用32位运行时执行SSIS包,使用dtexec.exe。

解决方法:使用SSIS包将Excel文件加载到SQL Server中。可以使用数据流任务,并使用Excel源和SQL Server目标。可以使用dtexec.exe在32位运行时中执行SSIS包。不需要在服务器上安装32位驱动程序,因为这些驱动程序已经存在于服务器和桌面机器中。

如果需要在C#中执行SSIS包,可以参考此链接:execute SSIS package from C#

更多关于使用dtexec.exe的信息,请参考此链接:More information on using dtexec.exe

0
0 Comments

问题的出现原因是:用户希望能够从Excel直接将数据导入到SQL Server中。

解决方法是使用一个Excel插件,即SQL Spreads。用户可以使用此插件构建解决方案,使最终用户能够直接从Excel中插入和更新SQL Server中的数据。用户可以在这里下载一个完全功能的试用版。

以下是问题的解决方法的代码示例:

// 导入所需的命名空间

using System.Data.SqlClient;

using System.Data;

using System.IO;

// Excel文件路径

string excelFilePath = "C:/path/to/excelFile.xlsx";

// SQL Server连接字符串

string connectionString = "Data Source=ServerName;Initial Catalog=DatabaseName;User ID=UserName;Password=Password";

// 创建一个新的SQL连接

using (SqlConnection connection = new SqlConnection(connectionString))

{

// 打开连接

connection.Open();

// 创建一个新的SQL命令

using (SqlCommand command = new SqlCommand())

{

// 设置SQL命令的连接

command.Connection = connection;

// 设置要执行的SQL语句

command.CommandText = "INSERT INTO TableName (Column1, Column2) VALUES (@Value1, @Value2)";

// 读取Excel文件中的数据

using (var stream = File.Open(excelFilePath, FileMode.Open, FileAccess.Read))

{

using (var reader = ExcelReaderFactory.CreateReader(stream))

{

// 跳过表头行

reader.Read();

// 逐行读取Excel数据

while (reader.Read())

{

// 获取Excel中的列值

string value1 = reader.GetString(0);

int value2 = reader.GetInt32(1);

// 设置SQL命令参数的值

command.Parameters.Clear();

command.Parameters.AddWithValue("@Value1", value1);

command.Parameters.AddWithValue("@Value2", value2);

// 执行SQL命令

command.ExecuteNonQuery();

}

}

}

}

// 关闭连接

connection.Close();

}

0
0 Comments

从上面的内容中可以得出以下结论:

问题的原因:BULK INSERT只能用于导入文本文件,而无法用于导入Excel文件(.xls/.xlsx扩展名)。

解决方法:可以尝试其他方法来导入Excel文件,例如使用特定的库或工具。

0