SQL Server .bakファイルをMySQLにインポートする方法は?
-
03-07-2019 - |
質問
タイトルは自明です。このようなインポートを直接行う方法はありますか?
解決
SQLサーバーの.BAKファイルは、Microsoft Tape Format(MTF)ref: http:/にあります。 /www.fpns.net/willy/msbackup.htm
bakファイルには、おそらくSQLサーバーがデータベースの保存に使用するLDFおよびMDFファイルが含まれます。
これらを抽出するには、SQLサーバーを使用する必要があります。 SQL Server Expressは無料で、仕事をします。
したがって、SQL Server Expressエディションをインストールし、SQL Server Powershellを開きます。そこで、sqlcmd -S <COMPUTERNAME>\SQLExpress
(管理者としてログインしながら)を実行します
次に、次のコマンドを発行します。
restore filelistonly from disk='c:\temp\mydbName-2009-09-29-v10.bak';
GO
これにより、バックアップの内容が一覧表示されます-必要なのは、論理名を示す最初のフィールドです-1つは実際のデータベースで、もう1つはログファイルです。
RESTORE DATABASE mydbName FROM disk='c:\temp\mydbName-2009-09-29-v10.bak'
WITH
MOVE 'mydbName' TO 'c:\temp\mydbName_data.mdf',
MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf';
GO
この時点でデータベースを抽出し、次に Microsoftの<!> quot; Sql Web Data Administrator <!> quot ;. とこのエクスポートツールを使用すると、データベースを含むSQLスクリプトが作成されます。
他のヒント
直接行う方法を見つけることができませんでした。
代わりに、bakファイルをSQL Server 2008 Expressにインポートし、 MySQL Migration Toolkit 。
チャームのように機能しました!
MySqlには、Microsoft SQLからデータベースをインポートするアプリケーションがあります。 手順:
- MySql Workbenchを開く
- <!> quot; Database Migration <!> quot;をクリックします。 (表示されない場合は、MySql updateからインストールする必要があります)
- シンプルなウィザードを使用して移行タスクリストに従います。
- ローカルマシンでSQL Server Management Studioを開きます。
- 「データベース」フォルダーを右クリックします。ポップアップメニューから、[新しいデータベース]を選択します。
- データベース名を入力し、[OK]をクリックします。
- 新しいデータベースアイコンを右クリックします。ポップアップメニューから[タスク-<!> gt;]を選択します。復元-<!> gt;データベース。
- 「デバイスから」オプションを選択し、参照ボタンをクリックします。
- 「追加」をクリックして、適切なファイルに移動します。 [OK]をクリックします。
- データベースの復元ウィンドウで、BAKファイルの横にあるチェックボックスを選択します。
- オプションページに切り替えます。 [既存のデータベースを上書きする]チェックボックスを選択します。 [OK]をクリックします。
- ローカルマシンでアクティブになっているデータベースの内容を確認します。
MySQLのバックグラウンドは限られていますが、そうすることはそれほど幸運ではないと思います。ただし、dbをMSSQLサーバーに復元し、SSISまたはDTSパッケージを作成してテーブルとデータをMySQLサーバーに送信することにより、すべてのデータを移行できるはずです。
これがお役に立てば幸いです
それは非常に疑わしい。 Leviが言うように、DTS / SSISを使用してこれを行うことができます。実際にデータをインポートせずにプロセスを開始することをお勧めします。基本的なテーブル構造をまとめるだけで十分です。それから、結果のテーブル構造を変更する必要があります。これは、tatが作成される可能性のある構造がせいぜい不安定になるためです。
これをさらに一歩進めて、最初にすべてのデータを文字列(varchar)形式で取り込むステージング領域を作成する必要があります。次に、検証と変換を実行して<!> quot; real <!> quot;に変換するスクリプトを作成できます。データベース。特に日付を扱う場合、2つのデータベースが常に適切に機能するとは限りません。
使用したメソッドには、Richard Harrisonのメソッドの一部が含まれていました。
では、SQL Server 2008 Expressをインストールします エディション、
これには、Web Platform Installer <!> quot; wpilauncher_n.exe <!> quot;のダウンロードが必要です。 これをインストールしたら、データベースの選択をクリックします(フレームワークとランタイムもダウンロードする必要があります)
インストール後、Windowsのコマンドプロンプトに移動して、
sqlcmd -S \ SQLExpressを使用します(一方 管理者としてログイン)
次に、次のコマンドを発行します。
ファイルリストのみを復元 disk = 'c:\ temp \ mydbName-2009-09-29-v10.bak'; GOこれにより、 バックアップ-最初に必要なのは 論理名を伝えるフィールド -1つは実際のデータベースで、もう1つはログファイルです。
RESTORE DATABASE mydbName FROM disk = 'c:\ temp \ mydbName-2009-09-29-v10.bak' WITH MOVE 'mydbName' TO 'c:\ temp \ mydbName_data.mdf'、MOVE 「mydbName_log」TO 'c:\ temp \ mydbName_data.ldf'; GO
Web Platform Installerを起動し、新しいタブからSQL Server Management Studioをインストールし、dbを参照してデータがそこにあることを確認しました...
その時点で、MSSQLに含まれているツールを試しました<!> quot; SQLインポートおよびエクスポートウィザード<!> quot;ただし、csvダンプの結果には列名のみが含まれていました...
代わりに、<!> quot; select * from users <!> quot;のようなクエリの結果をエクスポートしました。 SQL Server Management Studioから
SQL Serverデータベースは、Microsoft独自のものです。考えられる2つのオプションは次のとおりです。
-
データベースをCSV、XML、または同様の形式でダンプし、MySQLにロードします。
-
MySQLへのODBC接続をセットアップし、DTSを使用してデータを転送します。 Charles Grahamが提案したように、これを行う前にテーブルを構築する必要があるかもしれません。ただし、SQL Enterprise Managerウィンドウから対応するMySQLウィンドウにカットアンドペーストするのと同じくらい簡単です。
上記のリチャードの解決策を試みている人のために、一般的なエラーのナビゲートに役立つ可能性のある追加情報を以下に示します。
1)restore filelistonlyを実行すると、オペレーティングシステムエラー5(アクセスが拒否されました)が表示される場合があります。その場合は、SQL Server構成マネージャーを開き、SQLEXPRESSのログインをローカル書き込み権限を持つユーザーに変更します。
2)@ <!> quot;これにより、バックアップの内容が一覧表示されます-必要なのは、論理名を示す最初のフィールドです<!> quot; -ファイルに3つ以上のヘッダーがリストされている場合は、RESTORE DATABASEコマンドでこれらのファイルをどう処理するかを考慮する必要があります。データベースとログ以外のファイルの処理を指定しない場合、システムは明らかに.bakファイルにリストされている属性を使用しようとします。他の人の環境からファイルを復元すると、「パスに無効な属性があります。ディレクトリである必要があります」(問題のパスがマシン上に存在しないため)。 MOVEステートメントを提供するだけでこの問題は解決します。
私の場合、3番目のFTDataタイプのファイルがありました。追加したMOVEコマンド:
MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf',
MOVE 'sysft_...' TO 'c:\temp\other';
私の場合、実際には3番目のファイル用に新しいディレクトリを作成する必要がありました。最初に.mdfファイルと同じフォルダーに送信しようとしましたが、復元を実行したときに3番目のFTDataファイルで「正しく初期化に失敗しました」というエラーが発生しました。
SQL Serverの.bakファイルはそのデータベース方言に固有のものであり、MySQLと互換性がありません。
etlalchemy を使用して、SQL ServerデータベースをMySQLに移行してみてください。これは、異なるRDBMS間で簡単に移行できるようにするために作成したオープンソースのツールです。
クイックインストールと例は、 githubページで提供され、プロジェクトの詳細な説明があります。起源はこちらで見つけることができます。