SSIS将数据从Excel导出到SQL Server表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSIS将数据从Excel导出到SQL Server表相关的知识,希望对你有一定的参考价值。

我在SSIS上运行一个软件包,我在Visual Studio 2015上运行软件包(数据工具),我得到了所有的绿灯,一切似乎都很好,但我没有得到任何结果(目标表),我正在尝试从Excel工作簿导入数据之前删除目标表中的所有记录。即使转换不起作用,它们也会在Visual Studio上运行(但有些),但它们不会影响目标。

答案

很难说没有数据样本和没有屏幕截图会发生什么,但它确实应该有效。我在办公室里,使用Excel,SSIS和SQL Server,整天都在做同样的事情。您可以尝试使用Excel VBA将数据加载到SQL Server中吗?

Sub UpdateTable()

    Dim cnn As Object
    Dim wbkOpen As Workbook
    Dim objfl As Variant
    Dim rngName As Range
    Workbooks.Open "C:UsersExcelDesktopExcel_to_SQL_Server.xls"
    Set wbkOpen = ActiveWorkbook
    Sheets("Sheet1").Select
    Set rngName = Range(Range("A1"), Range("A1").End(xlToLeft).End(xlDown))
    rngName.Name = "TempRange"
    strFileName = wbkOpen.FullName
    Set cnn = CreateObject("ADODB.Connection")
    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFileName & ";Extended Properties=""Excel 12.0 Xml;HDR=Yes"";"
    nSQL = "INSERT INTO [odbc;Driver={SQL Server};Server=Excel-PCSQLEXPRESS;Database=[Northwind].[dbo].[TBL]]"
    nJOIN = " SELECT * from [TempRange]"
    cnn.Execute nSQL & nJOIN
    MsgBox "Uploaded Successfully"
    wbkOpen.Close
    Set wbkOpen = Nothing

End Sub

Sub InsertInto()

'Declare some variables
Dim cnn As adodb.Connection
Dim cmd As adodb.Command
Dim strSQL As String

'Create a new Connection object
Set cnn = New adodb.Connection

'Set the connection string
cnn.ConnectionString = "Excel-PCSQLEXPRESS;Database=Northwind;Trusted_Connection=True;"

'Create a new Command object
Set cmd = New adodb.Command

'Open the connection
cnn.Open
'Associate the command with the connection
cmd.ActiveConnection = cnn

'Tell the Command we are giving it a bit of SQL to run, not a stored procedure
cmd.CommandType = adCmdText

'Create the SQL
strSQL = "UPDATE TBL SET JOIN_DT = 2013-01-13 WHERE EMPID = 2"

'Pass the SQL to the Command object
cmd.CommandText = strSQL

'Open the Connection to the database
cnn.Open

'Execute the bit of SQL to update the database
cmd.Execute

'Close the connection again
cnn.Close

'Remove the objects
Set cmd = Nothing
Set cnn = Nothing

End Sub

另外,请考虑以下选项将数据从Excel移动到SQL Server。

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
  'Excel 12.0 Xml;
   Database=C:DataFilesEmployeeData1.xlsx',
   [vEmployee$]); 


SELECT * 
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
  'Data Source=C:DataFilesEmployeeData1.xlsx;
   Extended Properties=Excel 12.0 Xml')...[vEmployee$];

另外,如果你有标题......

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
  'Excel 12.0 Xml; HDR=YES;
   Database=C:DataFilesEmployeeData1.xlsx',
   [vEmployee$]);

同样,没有标题......

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
  'Excel 12.0 Xml; HDR=NO;
   Database=C:DataFilesEmployeeData1.xlsx',
   [vEmployee$]);

等等等

以上是关于SSIS将数据从Excel导出到SQL Server表的主要内容,如果未能解决你的问题,请参考以下文章

将数据从平面文件加载到 Sql Server 表,并使用 SSIS 导出到 excel

使用 SSIS 脚本任务将数据从多个 SQL 表导出到不同的平面文件

SSIS 将数据从 SQL db 复制到同一 excel 目标上的多个选项卡

查询值和目标字段的数量不同 - C# 脚本任务 SSIS - 使用动态列将 SQL Proc 的结果导出到 Excel

如何在 sql server 2008R2/ssis 中为每个日期导出带有日期时间的单独 excel 表?

SSIS 2008,Excel 2007 正确格式化 excel 列(导出,不导入)