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

リモートマシンで実行されているMSSQLデータベースをLinuxで実行されているローカルMySQLデータベースに移行し、エンコーディングを保持する方法

    MySQL Workbenchを使用して、これらの組み合わせを試しましたが、どれも機能しませんでした:

    リモートMSSQL>リモートMySQLネイティブODBCドライバー

    リモートMSSQL>リモートMySQLODBCデータソースドライバー

    リモートMSSQL>リモートMySQLfreeTDSODBCドライバー(UTF-8ありまたはなし)

    仮想MSSQL>仮想MySQLネイティブODBCドライバー

    仮想MSSQL>仮想MySQLODBCデータソースドライバー

    仮想MSSQL>仮想MySQLfreeTDSODBCドライバー(UTF-8ありまたはなし)

    いずれの場合も、移行プロセスがスタックするか(Workbenchが応答しない)、文字が正しく転送されませんでした。

    試行錯誤の合計時間は約12時間でした。

    ここでは、MSSQLデータベース全体を開発マシンで実行されているローカルMySQLサーバーに正常に移行する方法の1つを紹介します。

    VirtualBoxマシンからリモートデスクトップ接続(RDC)を介してリモートW10マシンに接続していたので、最初は、作業を簡単にするためにこの余分な手順を削除したいと思いました。

    1. まだお持ちでない場合は、無料のVirtualBoxマシンをダウンロードしてインストールしてくださいマイクロソフトが提供するもの 開始します

    2. この仮想マシンからRDCを起動し、接続する前に、仮想マシンにローカルディスクを追加して、リモートマシンで使用できるようにします

    3. リモートマシンでSQLServerManagement Studioを起動し、データベースのバックアップを作成します(目的のデータベースを右クリックし、[タスク]> [バックアップ...]、バックアップファイルをディスクに保存します)

    4. ネットワークに移動し、ファイルを仮想マシンのC:ドライブにアップロードして、このバックアップファイルを仮想マシンのドライブにコピーします

    5. 仮想マシンにMSSQLServer Express Editionを無料でインストールし、SQL Server Management Studio(2014バージョンをダウンロードしました)

    6. 新しいデータベースを作成し、[タスク...]>[復元]>[データベース...]を選択し、仮想マシンにアップロードしたファイルを選択し、[既存のデータベースを上書きする]を選択します。

    7. MS SQLサーバーの新しいログインを作成し([ログイン]を右クリック)、目的のログインとパスワードを選択し、sysadminロールを割り当てます。これは、1回限りの移行プロセスであるためです。

    8. ローカルホストLinuxマシンに最新のMySQLWorkbenchをインストールします。MySQLデータベースはすでにローカルで実行されていると思いますが、そうでない場合はインストールします

    9. Linuxを使用しているため、システムにFreeTDS ODBCドライバーをインストールするには、追加の手順が必要になります。この場合、リンク、LinuxにFreeTDSドライバーをインストールする方法 死んでしまったら、MySQLWorkbenchのマニュアルでデータベース移行ウィザード/MicrosoftSQLServerの移行を検索してください

    10. ホストLinuxシステムからアクセスできるように仮想マシンをセットアップします。これを行うには、[接続先:ブリッジアダプター]を選択し、仮想マシンの設定でwlan0を選択します

    11. 仮想マシンを起動し、アダプタが使用するのと同じネットワークからIP範囲を選択します

    12. 仮想マシンで、MS SQLサーバーのファイアウォールルールを追加するか、ファイアウォールを一時的にオフにします

    これからは、仮想マシンが実行されているローカルLinuxマシンですべてが実行されます

    1. MySQL Workbenchのデータベース移行を開始し、ソースマシンとしてMS SQLを選択し、仮想マシンで以前に設定した正しいIPアドレスを入力します

    2. ターゲットデータベースとして、ローカルのMySQLデータベース設定とクレデンシャルを使用します

    3. [ターゲット作成オプション]ステップで、[SQLスクリプトファイルの作成のみ]を選択し、スキーマが既に存在する場合は[スキーマを保持する]を選択します。

    4. データ転送設定に到達するまで、次の手順を実行します。テーブルのオンラインコピーを選択します...ただし、[次へ]を押さないでください

    5. 手順15で保存したスクリプトを編集します。:

    削除:

    CREATE SCHEMA IF NOT EXISTS `Test` ;
    

    追加:

    CREATE DATABASE `Test` DEFAULT CHARACTER SET utf16 COLLATE utf16_czech_ci;
    

    テーブル定義に必要な文字セットと照合を追加して、すべての作成テーブル定義を変更します。

    CREATE TABLE IF NOT EXISTS `TestTable` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) COLLATE utf16_czech_ci DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) DEFAULT CHARSET=utf16 COLLATE=utf16_czech_ci;
    
    1. この更新されたスクリプトをMySQLデータベースで実行します

    2. MySQL Workbenchの次のステップに進み、データが正しくインポートされるはずです

    明確に述べられていないいくつかのステップがあるかもしれません、あなたがいくつかの説明が必要な場合はコメントで知らせてください




    1. Oracle11gでのJSONのサポート

    2. クエリ内の連結JSON(B)列のマージ

    3. Postgresl select count(*)時間のかかる

    4. ORA-01858を参照してください:数値が予期されていた場所に非数値文字が見つかりました