如何将Excel文件导入SQL Server 2008

4

如何使用SQL查询而不使用导入向导将Excel文件导入SQL Server 2008 Express版中的新表?

谢谢 Prady

3个回答

6
有一篇微软知识库文章详细介绍了所有可能的方法。http://support.microsoft.com/kb/321686 我认为使用OPENROWSETOPENDATASOURCE是最简单的方法,不需要使用向导。(请参见分布式查询)
SELECT * INTO XLImport4 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\test\xltest.xls', [Customers$])

请参阅OPENROWSET文档,页面下方有示例。 http://msdn.microsoft.com/en-us/library/ms190312.aspx

正确,但它是OPENROWSET查询部分,请查看我提供的链接。 - Chris Diver
2
如果您在使用x64机器时遇到问题,请查看此链接以获取x64 Jet引擎:https://www.microsoft.com/en-us/download/details.aspx?id=13255 - Neil

1

使用ExcelReaderFactory读取Excel

您可以使用以下代码

VB.net 代码

Dim stream As FileStream = File.Open("YouExcelFilePath.xls", FileMode.Open, FileAccess.Read)
Dim excelReader As IExcelDataReader = ExcelReaderFactory.CreateBinaryReader(stream)
Dim result As DataSet = excelReader.AsDataSet()
excelReader.Close()
result.Dispose()

C# 代码

FileStream stream = File.Open("YouExcelFilePath.xls", FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
DataSet result = excelReader.AsDataSet();
excelReader.Close();
result.Dispose();

现在可以使用Bulkcopy类进行批量导入。

或者

创建XML并发送到数据库

或者

使用OPENROWSET在存储过程中读取Excel文件并插入/更新数据。

请按照下面的文章实施。

在SQL存储过程中读取Excel


0

右键单击数据库名称/转到任务,然后选择导入数据

作为源选择之前创建的 Excel 文件,并选择其路径

在下一页中选择 SQL Server 作为目标


2
那是导入向导,而问题的作者明确想要避免使用它。 - rikitikitik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接