SQL 2005: SSIS – PUSHING DATA TO MYSQL USING SCRIPT COMPONENT DESTINATION

来源:互联网 发布:机械制作软件 编辑:程序博客网 时间:2024/04/30 02:11

SQL 2005: SSIS – PUSHING DATA TO MYSQL USING SCRIPT COMPONENT DESTINATION

Sometimes, I just wonder why things that are useful in previous versions of things get removed. In SQL 2000, in DTS, there was an ODBC destination, you could write (insert, update, etc) to a foreign (non MSFT SQL) system easily. DB2 – no prob, MySQL – heck yea. For whatever reason, in SQL 2005 Integration Services (SSIS), that ability was removed (in SQL 2008 SSIS there is an ADO.NET Destination that can update ODBC sources, so they brought some functionality back).

I need to write to a MySQL database pulling data from a SQL Database, using SSIS 2005. What are the options? Well, the best I could come up with was a Script Component Destination in my DataFlow, this is how I did it:

1) Create a new SSIS Package, throw a DataFlow on the Control Flow, Add your connections (let’s say SourceDB_SQL – your source data, and then DestDB_MySQL – your MySQL destination, it needs to be a ADO.NET Connection, you need to install the MySQL connection – I installed this http://dev.mysql.com/downloads/connector/odbc/5.1.html)

2) In your DataFlow, create your OLEDB Source and get your query returning data, throw a Script Component on the Data Flow and make it a Destination.

ms_01

3) Open the Script Component, set your input columns up, and then your Connection Manager

ms_02

4) Open the actual script, and you just have to add a few lines of code:

' Microsoft SQL Server Integration Services user script component' This is your new script component in Microsoft Visual Basic .NET' ScriptMain is the entrypoint class for script components Imports SystemImports System.DataImports System.MathImports Microsoft.SqlServer.Dts.Pipeline.WrapperImports Microsoft.SqlServer.Dts.Runtime.WrapperImports System.Data.Odbc Public Class ScriptMain    Inherits UserComponent     Dim mySQLConn As OdbcConnection    Dim sqlCmd As OdbcCommand     Public Overrides Sub AcquireConnections(ByVal Transaction As Object)        mySQLConn = CType(Me.Connections.MySQLDatabase.AcquireConnection(Nothing), OdbcConnection)    End Sub     Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)         sqlCmd = New OdbcCommand("INSERT INTO steve_test(ShipTo, YearValue) VALUES(" & Row.ShipTo & ", '" & Row.YearValue & "')", mySQLConn)        sqlCmd.ExecuteNonQuery()     End Sub     Public Overrides Sub ReleaseConnections()        Me.Connections.MySQLDatabase.ReleaseConnection(mySQLConn)    End SubEnd Class

Run it and you are done! Easy. Now you can write data into MySQL using SQL 2005 SSIS (or any ODBC destination if you can get it to work :))





Similar Posts
  • SSIS – Two Ways Using Expressions Can Make Your Life Easier – Multi DB Select, Non Standard DB Select
  • Dev and Prod Systems, Using a HOST file to ensure your datasource is pointing the right system
  • SSIS – Custom Control Flow Component – Execute SQL Job And Wait
  • ETL Method – Fastest Way To Get Data from DB2 to Microsoft SQL Server
  • SSIS – Pulling Data from a non default collation DB to a default collation DB

原创粉丝点击