sql >> データベース >  >> RDS >> Mysql

条件付き分割変換:SQLServerからOracleおよびMySQLデータベースへのデータのエクスポート

    この記事では、SQLServerデータベーステーブルのデータをOracleデータベースとMySQLデータベースに分割してエクスポートする方法について説明しました。このプロセスは、SSISで「条件付き分割変換」として定義されている条件に基づいています。 」。条件付き分割変換は、あらゆるプログラミング言語のcaseステートメントのようなものです。条件付きを使用すると、条件付き分割コンポーネントで定義された条件に基づいて、コンポーネントの出力を複数の宛先にリダイレクトできます。

    デモのセットアップ

    SQL Serverデータツールを使用しながらODBC接続を使用することにより、さまざまなデータベースプラットフォームからデータを取得できます。ほとんどのデータベースプラットフォームは、アプリケーションとデータベース間の接続を構成するために使用できる接続ドライバーを提供します。

    AdventureWorks2014」の顧客テーブルのデータをエクスポートします 条件分割で定義された条件に基づいて、OracleおよびMySQLへのデータベース。データは「StateProvinceName」に基づいて分割されます 「顧客」の「」列 " テーブル。 「カリフォルニア」という名前の値を持つレコード 」の「StateProvinceName 」列は、「ワシントン」という名前の値を持つOracleデータベースおよびレコードにエクスポートされます。 」はMySQLデータベースにエクスポートされます。

    Oracle 11gExpressEditionとMySQL8.0をローカルマシンにインストールしました。 Oracleと「WideWorldImportors」でXEデータベースを作成しました 」MySQLサーバー上のデータベース。 「顧客」を作成しました 」両方のデータベースのテーブル。以下は、テーブルを作成するためのSQLコードです。

    CREATE TABLE customers 
      ( 
         cust_id                INT, 
         cust_customername      VARCHAR(500), 
         cust_contactnumber     VARCHAR(50), 
         cust_contactnumbertype VARCHAR(10), 
         cust_email             VARCHAR(150), 
         cust_addresstype       VARCHAR(10), 
         cust_address           VARCHAR(1500), 
         cust_city              VARCHAR(50), 
         cust_state             VARCHAR(50), 
         cust_postalcode        INT, 
         cust_countryname       VARCHAR(100) 
      )

    SQL Serverデータツールのデータフローコンポーネントを使用しながら、ODBCドライバーを構成することにより、さまざまなデータベース間でデータを転送できます。接続マネージャーによってインストールできるSQLServerデータツールはすでにOracleClientをサポートしていますが、MySQLの場合は、ODBCデータソースを作成する必要があります。

    SQL Serverデータツールは32ビットアプリケーションであり、32ビットモードで実行されます。したがって、MySQLの32ビットODBCドライバーをダウンロードする必要があります。以下の画像を参照してください:

    Connector/ ODBC8.0.11」をインストールする必要があります 」を使用して、ODBCドライバーを使用してMySQLデータベースに接続します。 ODBC 8.0.11ドライバーは、64ビットOSプラットフォームで使用できます。したがって、古いバージョンのODBCドライバーを使用する必要があります。下の画像を参照してください:

    MySQLが提供する接続ドライバーを使用する代わりに、MySQL用のODBCドライバーを使用しました。 Devartによって開発されました。

    MySQL用のDevartODBCドライバーは、強力で高性能な接続ドライバーです。プラットフォームに依存せず、構成が簡単で、MySQLデータベース接続用のサードパーティツールをサポートします。以下は機能です。

    1. SSLおよびSSHの安全な接続をサポートします。
    2. MySQLのすべてのバージョンと互換性があります。これは、MariaDB、MySQLおよびAmazonAurora用のAzureデータベースをサポートします。
    3. 多くのサードパーティ分析ツールと互換性があります。
    4. プラットフォームに依存しません。 32ビットと64ビットの両方のOSプラットフォームなどをサポートします。

    MySQL用ODBCドライバーの30日間の試用版をダウンロードできます ここ 。参照用に次の画像を参照してください:

    ドライバがダウンロードされたら、セットアップを実行してインストールします。

    ドライバをインストールしたら、MySQLデータベースに接続するようにODBCデータソースを構成する必要があります。これを行うには、ODBCデータソース(32ビット)を開きます。これは、[コントロールパネル]>>[管理ツール]>>[ODBCデータソース]にあります。以下の画像を参照してください:

    ODBCデータソース(32ビット)を開きます。ダイアログボックス「ODBCデータソースアドミニストレータ(32ビット) " 開くでしょう。そのダイアログボックスで、「追加」をクリックします 」。別のダイアログボックス「新しいデータソースの作成 コンピュータにすべてのODBCドライバがインストールされている」が開きます。そのリストから、「MySQL用のDevartODBCドライバー」を選択します。 」をクリックし、「完了」をクリックします 」。参照用に次の画像を参照してください:

    完了」をクリックしたら 」、MySQL接続パラメータを設定するためのダイアログボックスが開きます。そのダイアログボックスで、接続パラメータを定義できます。適切なフィールドにデータソースを認識するための名前と説明を入力します。 「サーバー 」テキストボックスには、MySQLがインストールされているコンピューター/サーバーのホスト名またはIPアドレスが表示されます。サーバーにログインしてデータベースを選択するための適切なユーザー名とパスワードを入力します。参照用に次の画像を参照してください:

    MySQLをローカルマシンにインストールしたので、サーバーテキストボックスとして「localhost」を指定しました。 「root」ユーザーでサーバーに接続しているため、ユーザーは「root」です。理想的には、それは好ましくありません。 rootの代わりに、別のユーザーを作成し、それを使用してMySQLデータベースを認証します。 「WideWorldImportors」を作成しました MySQLデータベースサーバー上の」データベース、したがって「 WideWorldImportors」を提供しました データベースのドロップダウンボックスに「」が表示されます。

    同様に、SSDTを使用してOracleデータベースに接続するには、Oracleクライアントソフトウェアをインストールする必要があります。 SQL Serverデータツールは32ビットモードで動作するため、Oracle用の32ビットバージョンのODBCドライバーをインストールする必要があります。ここからOracleClientをダウンロードできます。

    SSISパッケージの作成方法は誰もが知っているので、データフロータスクの作成方法を直接説明します。

    データフロータスクの作成

    データフロータスクでは、次の4つのコンポーネントを使用します。

    1. SQLServerデータベースからデータを入力するためのADO.NETソース。
    2. データを複数のセットに分割するための条件付き分割。
    3. MySQLの宛先とOracleの宛先を構成する
    4. 条件付き分割の出力を関連するデータベースに保存するようにデータパスを構成します。

    ADO.NETソースの構成

    ADO.NETソース」をドラッグアンドドロップします 」から「データフロー」へのSSISツールボックス 」ウィンドウを表示し、「販売データ」という名前を付けます 次の画像に示すように」:

    販売データ」をダブルクリックします 」。ダイアログボックス「ADO.NETソースエディタ " 開くでしょう。接続マネージャーはまだ作成されていないため、「ADO.NET接続マネージャー 」ドロップダウンボックスは空です。そのダイアログボックスで新しい接続を作成するには、「新規」をクリックします 」。別のダイアログボックス「接続マネージャーの構成」 下の画像に示すように」が開きます:

    ADO.NET接続マネージャーの構成」 」ダイアログボックスで、「新規」をクリックします 」をクリックして「接続マネージャー」を開きます 」ダイアログボックス。

    サーバー名 」テキストボックスに、SQLServerがインストールされているサーバーの名前またはIPアドレスを入力します。 SQL Serverがローカルマシンにインストールされているため、「 localhost \ SQL2016」を提供しました 」をサーバー名のテキストボックスとして使用します。 [認証]ドロップダウンボックスで、SQLインスタンスへの接続に使用する認証の種類を選択します。 Windows認証を使用してSQLサーバーに認証しているため、ドロップダウンボックスでWindows認証を選択しました。最後に、[データベース]ドロップダウンボックスで、テーブルが保存されているデータベースの名前を選択します。 「AdventureWorks2014」からデータをエクスポートしています 」データベースなので、「データベース名」で選択しました 」ドロップダウンボックス。次の画像を見てください:

    構成が完了したら、[接続のテスト]をクリックします 」をクリックしてデータベースとの接続を確認し、「OK」をクリックします。

    ADO.NET接続マネージャーを構成したため、「ADO.NET接続マネージャー」でデフォルトの接続マネージャーが自動的に選択されます。 " 落ちる。テーブルからデータを取得するには、[テーブルまたはビュー]を選択します [データアクセスモード]ドロップダウンボックスの「」。ドロップダウンボックスで[テーブルまたは表示]オプションを選択すると、データベースに作成されたすべてのテーブルのリストが表示されます。そのリストから「顧客」を選択します 」の表を次の画像に示します:

    条件付き分割の構成

    次に、条件に基づいてExcelのさまざまなワークシートにデータをエクスポートするために条件付き分割変換を使用します。条件付き分割コンポーネントをSSISツールボックスからデータフローウィンドウにドラッグし、名前を「データフィルター」に変更します。 下の画像に示すように」:

    前述したように、「Customers」テーブルのデータの出力は、「 Conditional Split 」で定義された条件に基づいて、複数のOracleおよびMySQLデータベースにエクスポートされます。 」コンポーネント。

    まず、ADO.Netソースを条件付き分割変換に接続します。これを行うには、「 Customers SQL DB」の下にあるデータフローパスの青い矢印をクリックします。 」コンポーネントをドラッグして、下の画像に示すように条件付き分割変換にドラッグします。

    条件付き分割を構成するには、「条件付き分割変換エディター」をダブルクリックします。ダイアログボックス「条件付き分割変換エディター 次の画像に示すように、」が開きます。

    StateProvinceName」に条件を適用するには 」列、最初に列ノードを展開し、「 StateProvinceName」をドラッグします 」列(セクション1)を入力し、グリッドにドロップします(セクション3)。データフィルタリング条件は「StateProvinceName」列にあります。 「カリフォルニア」という値を持つレコード 」は、値が「ワシントン」のOracleデータベースおよびレコードにエクスポートされます。 」はMySQLデータベースにエクスポートされます。条件に基づいて、等しい(==)を使用します オペレーター。方程式は次のとおりです。

    [Cust_State]=="California"
    
    [Cust_State]=="Washington"

    次の画像を見てください:

    条件を定義したら、[OK]をクリックしてダイアログボックスを保存して閉じます。

    MySQL宛先の構成

    したがって、SQL ServerからMySQLとOracleにデータをエクスポートするには、2つの宛先を構成する必要があります。まず、MySQLの宛先を構成します。これを行うには、以下の画像に示すように、SSISツールボックスからODBC宛先をドラッグアンドドロップし、名前を「MySQLDatabase」に変更します。

    MySQLデータベース(ODBC接続)の宛先をダブルクリックします。ダイアログボックス「ODBC宛先」が開きます。そのダイアログボックスで「新規」をクリックします。次の図に示すように、別のダイアログボックス「ODBC接続マネージャーの構成」が開きます。

    別のダイアログボックス「接続マネージャー " 開くでしょう。ダイアログボックスで、「ユーザーまたはシステムのデータソース名を使用」と入力されたマシンで作成されたDSNのリスト 」ドロップダウンボックス。すでにODBCDSNを構成しているので、「MySQL宛先」を選択します 下の画像に示すように、ドロップダウンリストから」:

    接続のテスト」をクリックします 」をクリックして接続が正常に確立されたことを確認し、「OK」をクリックします。

    現在、「ODBC宛先」にあります 」ダイアログボックスで、「テーブルまたはビューの名前」からテーブル名を選択します 次の画像に示すように、「」ドロップダウンボックス:

    MySQLデータベースの宛先が正常に構成されたら、Oracleデータベースの宛先を構成します。

    Oracle宛先の構成

    Oracleの宛先を構成するには、次の図に示すように、「ADO.NET Destination」をデータフローウィンドウにドラッグアンドドロップし、名前を「OracleDatabase」に変更します。

    Oracle Database(ADO.NETの宛先)をダブルクリックします。ダイアログボックス「ADO.NETDestinationEditor " 開くでしょう。ダイアログボックスで、[新規]をクリックします 」。別のダイアログボックス「ADO.NET接続マネージャーの構成」 次の画像に示すように開きます:

    ADO.NET接続マネージャーの構成」について 」ダイアログボックスで、「新規」をクリックします 」。別のダイアログボックス「接続マネージャ」が開きます。 Oracleデータベース接続を構成するには、「 Net.Provider \ OracleClient」を選択する必要があります 「プロバイダー」の「」 " ダイアログボックス。 「サーバー名」テキストボックスに、Oracleデータベースサーバーのホスト名またはIPアドレスを入力します。 Oracleデータベースインスタンスに接続するためのユーザー名とパスワードを指定します。前述したように、ローカルマシンとしてOracleインスタンスをインストールしたため、サーバー名のテキストボックスに「localhost」を指定しました。 「Sales」ユーザーを使用してOracleデータベースに接続したため、「User Name」テキストボックスに、ユーザー名として「Sales」を入力し、そのパスワードを入力しました。次の画像を見てください:

    接続が確立されたことを確認するには、[接続のテスト]をクリックします 」をクリックし、接続が確立されたら「 OK」をクリックします 」をクリックしてダイアログボックスを閉じます。

    次に、「ADO.NET宛先エディター 」ダイアログボックスで、データを保存するテーブルまたはビューの名前を選択します。データをcustomerテーブルにエクスポートしているため、「 Sales.Customer」を選択しました 」の表を次の画像に示します:

    データパスを構成する

    両方の宛先を構成したら、それぞれのデータベースでデータを転送するようにデータパスを構成します。これを行うには、条件付き分割変換の下にある青いデータパスの矢印をドラッグし、ODBC宛先(MySQL宛先)にドロップします。データパスがODBC宛先に接続すると、ダイアログボックスが表示されます。 「出力」から宛先を選択します 」ドロップダウンボックスを使用して、SQLクエリから取得したデータを送信します。ダイアログボックスは次の画像のようになります:

    ドロップダウンリストには、条件付き分割変換で定義されたすべての条件が表示されます。この場合、ドロップダウンメニューには3つのオプションが含まれます。

    1. MySQL出力
    2. Oracle出力
    3. デフォルトの出力

    上記のように、値が「ワシントン」のレコード 「StateProvinceName」列の」がMySQLデータベースにエクスポートされるため、「MySQL出力」を選択します。

    次に、条件付き変換の出力列をMySQLデータベースのcustomersテーブルにマップします。これを行うには、「MySQLデータベース」をダブルクリックします 」(ODBC宛先)および「ODBC宛先」ダイアログボックスで、「マッピング」を選択します。 次の画像に示すように、ダイアログボックスの左側のペインにある「」オプション:

    上の画像では、「入力列」はSQL Serverテーブルの列名であり、宛先列はMySQLシートの「Customers」テーブルの列名になります。このデモでは、SQLテーブルとMySQLテーブルの列名が同じであるため、入力列と出力列が自動的にマップされます。

    同じ方法で、「OracleOutput」データパスのデータフロー構成プロセスを繰り返します。以下は変更点です。

    1. 次の画像に示すように、入出力選択ダイアログボックスで「OracleOutput」を選択する必要があります。
    2. 「ADO.NETDestinationEditor」で、次の画像に示すように、入出力列のマッピングが正しいことを確認します。

    すべての構成が完了すると、データフロータスク全体が次の画像のようになります。

    SSISパッケージのテスト

    次に、メニューバーの[スタート]ボタンをクリックしてパッケージを実行します。パッケージの実行が正常に完了すると、次の画像のようになります。

    パッケージは、条件付き分割を使用してSQLデータの出力を分割し、MySQLデータベースに4,445レコード、Oracleデータベースに2,285レコードをエクスポートしました。

    概要

    この記事では、MySQLのODBC接続を構成し、データフローを使用してSSISパッケージを作成しました。 条件付き分割変換を使用しました SQL Serverデータベースから取得した出力を分割し、OracleおよびMySQLデータベースにエクスポートします。

    便利なツール:

    Devart SSISデータフローコンポーネント– SQL ServerIntegrationServicesを介してデータベースとクラウドデータを統合できます。

    Devart ODBCドライバー–ODBCベースのアプリケーションに高性能で機能豊富な接続ソリューションを提供します。


    1. PHPとMySQLのファイルをアップロードおよびダウンロードする方法

    2. SQLServerでの更新の選択

    3. 在庫データベースが小売業に利益をもたらす4つの方法

    4. sqliteが返されました:エラーコード=1、msg =そのような列はありません:kitchen1