【问题标题】:Changing format of columns in CSV before loading to SQL server database using SSIS在使用 SSIS 加载到 SQL Server 数据库之前更改 CSV 中的列格式
【发布时间】:2017-10-22 20:37:37
【问题描述】:

我正在尝试使用 SSIS 在 SQL Server 数据库表中加载 csv 文件。 目前在加载文件之前,我们在 excel 中打开文件并将 B 列的格式从 General 更改为 Number。 (如果不这样做,则会加载该列的错误数据)

例如,下面的第 4 行是日期,但在加载之前,我们将 B 列的格式从 General 更改为 Number。 然后将其转换为值 42767(正确数据)

Column A Column B
-----------------  
1. 11622
2. IZED
3. DGA-435
4. 1/02/2017

现在我们必须自动化这个过程并使用一些逻辑,这可以在 SSIS 中完成吗? 请提出建议。

谢谢, 阿杰

【问题讨论】:

    标签: sql-server csv ssis etl ssis-2012


    【解决方案1】:

    您可以使用 Vb.net (或 c#) 脚本并使用 Microsoft.office.Interop.Excel 库来实现此目的

    注意:您必须将Microsoft.Office.Interop.Excel.dll 文件添加到以下目录(.Net Framework dll 目录)C:\Windows\Microsoft.NET\Framework\v2.0.50727 和(sql server 数据工具 dll 目录)C:\Program Files\Microsoft SQL Server\100\DTS\Binn(使用 Visual Studio 2005 和 sql 2008 ) 然后将此 dll 添加为脚本任务中的引用

    Imports Microsoft.Office.Interop.Excel
    
    Public Sub Main()
    
            Dim m_XlApp As Application 
    
             m_XlApp = New Application
             m_XlApp.visible = False
             m_XlApp.DisplayAlerts = False
    
             Dim m_xlWrkbs As Workbooks = m_XlApp.Workbooks
             Dim m_xlWrkb As Workbook
             m_xlWrkb = m_xlWrkbs.Open(strFile) 'strFile must contains the fule path ex: C:\1.xls
    
             m_xlWrkb.DoNotPromptForConvert = True
    
            Dim m_xlsheet As Worksheet = w.Sheets(1)
    
            'Change the second column to number
            m_xlsheet.Cells(1,2).EntireColumn.NumberFormat = "0"
    
            m_xlWrkb.Save()
            m_xlWrkb.Close(SaveChanges:=True)
    
            m_XlApp.Quit()
    
    
    End Sub
    

    注意:如果您决定使用脚本任务来实现这一点,您必须了解如何在脚本任务中添加自定义引用

    可能有帮助的链接

    【讨论】:

    • 感谢哈迪的回复,但我不知道如何使用它。我尝试将它放在脚本任务中的脚本中,但之后我无法解决错误(我不知道 VB.net,因为我不是来自编码背景)。如果可能,请您提供一个示例。
    • @Ajay 我编辑了我的答案,您添加了Microsoft.office.Interop.Excel 作为修复错误的参考,还将 strFile 变量替换为完整的文件路径(您可以使用包变量或手动传递它)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 2017-05-17
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多