2017-05-23 2 views
3

Ich versuche, eine CSV-Datei in einer SQL Server-Datenbanktabelle mit SSIS zu laden. Momentan öffnen wir vor dem Laden der Datei die Datei in Excel und ändern das Format der Spalte B von General in Number. (Wenn dies nicht erfolgt, werden falsche Daten für diese Spalte geladen.)Ändern des Formats von Spalten in CSV vor dem Laden in SQL Server-Datenbank mit SSIS

Die vierte Zeile darunter ist das Datum, aber vor dem Laden ändern wir das Format von Spalte B von Allgemein zu Zahl. die dann 42767 (korrekte Daten) auf dem Wert umgewandelt

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

Nun müssen wir diesen Prozess automatisieren und eine gewisse Logik, kann dies in SSIS getan werden? Bitte vorschlagen.

Danke, Aj

Antwort

1

Sie dies erreichen können eine Vb.net (oder C#) Skript und mit Microsoft.office.Interop.Excel Bibliothek

Hinweis verwenden: Sie Microsoft.Office.Interop.Excel.dll Datei in den folgenden Verzeichnissen hinzufügen müssen (.Net Framework dll Verzeichnis) C:\Windows\Microsoft.NET\Framework\v2.0.50727 und (sql server data tools dll Verzeichnis) C:\Program Files\Microsoft SQL Server\100\DTS\Binn (mit Visual Studio 2005 und SQL 2008) und dann diese DLL als Referenz in Ihrem Skript-Task

012 hinzufügen
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 

Hinweis: Wenn Sie sich entscheiden, dies zu erreichen, ein Skript Aufgabe mit Ihnen über das Hinzufügen von benutzerdefinierten Referenzen in einem Skript-Task

Links zu lernen haben, kann

+0

Danke für die Antwort Hadi, aber ich bin mir nicht sicher, wie man das benutzt. Ich habe versucht, dies in das Skript in der Skript-Aufgabe zu setzen, aber ich bin nicht in der Lage, die Fehler danach zu beheben (ich kenne VB.net nicht, da ich nicht von backgound bin). Könnten Sie bitte ein Beispiel geben, wenn möglich. – Ajay

+0

@Ajay Ich habe meine Antwort bearbeitet, Sie haben 'Microsoft.office.Interop.Excel' als Verweis hinzugefügt, um Fehler zu beheben, ersetzen Sie auch strFile Variable mit dem vollständigen Dateipfad (Sie können es übergeben mit Paketvariable oder manuell) – Hadi

Verwandte Themen