SSIS - 将数据从 SQL 服务器移动到 MySQL

SSIS - Move data from SQL Server to MySQL

我必须使用 SSIS 将数据从 SQL 服务器移动到 MySQL。我有 this tutorial,但我在 Visual Studio 2008 中找不到 ODBC 目标。是否有另一种方法可以将数据从 SQL 服务器移动到 MySQL?

ODBC 目标是在 SQL 2012 中添加的。Visual Studio 2008(或真正的 BIDS 2008)适用于 SQL Server 2008 和 2008 R2,它们是之前的版本。

但是,您仍然可以在 2008 年使用 ODBC 驱动程序和 ADO.NET 目标执行此操作。在这里阅读更多相关信息:https://blogs.msdn.microsoft.com/mattm/2008/03/04/connecting-to-mysql-from-ssis/

您可以尝试使用脚本任务将数据从 SQL 服务器加载到 MySQL

Public Sub Main()
    Dim sSql As String = "select s.PROTOCOL_SUBJECT_ID, s.PROTOCOL_ID, s.SEQUENCE_NUMBER, s.ORGANIZATION_ID" & vbCrLf &
                "from dim_subject s" & vbCrLf &
                "where s.ORGANIZATION_ID <> 2"

    Dim sCn As String = "Driver={MySQL ODBC 5.1 Driver};Option=3;Server=Server1;Port=3306;Database=DB1;User=User1;Password=Pass1;"
    Dim cnMySql As New Data.Odbc.OdbcConnection(sCn)
    cnMySql.Open()

    Dim cn As New SqlClient.SqlConnection("Data Source=ResFinCt;Initial Catalog=OnCore;User ID=saddd;Password=dsfsf;")
    cn.Open()
    Dim cmd As SqlClient.SqlCommand = New SqlClient.SqlCommand(sSql, cn)
    Dim dr As SqlClient.SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

    While dr.Read
        Dim PROTOCOL_SUBJECT_ID As String = dr.GetValue(dr.GetOrdinal("PROTOCOL_SUBJECT_ID")).ToString()
        Dim PROTOCOL_ID As String = dr.GetValue(dr.GetOrdinal("PROTOCOL_ID")).ToString()
        Dim SEQUENCE_NUMBER As String = dr.GetValue(dr.GetOrdinal("SEQUENCE_NUMBER")).ToString()
        Dim ORGANIZATION_ID As String = dr.GetValue(dr.GetOrdinal("ORGANIZATION_ID")).ToString()

        sSql = "insert into stg_subject(PROTOCOL_SUBJECT_ID, PROTOCOL_ID, SEQUENCE_NUMBER, ORGANIZATION_ID) values(" &
             PROTOCOL_SUBJECT_ID & ", " &
             PROTOCOL_ID & ", '" &
             SEQUENCE_NUMBER & "', " &
             ORGANIZATION_ID & ")"

        Dim cmdMySql As New Odbc.OdbcCommand(sSql, cnMySql)
        cmdMySql.ExecuteNonQuery()

    End While

    dr.Close()
    cnMySql.Close()

    Dts.TaskResult = ScriptResults.Success
End Sub