SQL Serverの.bakファイルをMySQLにインポートする方法は?

2008年10月01日に質問されました。  ·  閲覧回数 209k回  ·  ソース

Marcel picture
2008年10月01日

タイトルは自明です。 このようなインポートを直接行う方法はありますか?

回答

Richard Harrison picture
2008年10月01日
67

SQLサーバーからの.BAKファイルはMicrosoftTape Format(MTF)参照です: http

bakファイルには、SQLサーバーがデータベースを格納するために使用するLDFファイルとMDFファイルが含まれている可能性があります。

これらを抽出するには、SQLサーバーを使用する必要があります。 SQL Server Expressは無料で、その役割を果たします。

そのため、SQL Server Expressエディションをインストールし、SQL ServerPowershellを開きます。 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の「SQLWebデータ管理者」をインストールしこのエクスポートツールと一緒に

AutoCiudad picture
2012年12月09日
9

MySqlには、MicrosoftSQLからデータベースをインポートするアプリケーションがあります。 手順:

  1. MySqlWorkbenchを開く
  2. 「データベースの移行」をクリックします(表示されない場合は、MySqlアップデートからインストールする必要があります)
  3. シンプルなウィザードを使用して、移行タスクリストに従います。
Marcel picture
2008年10月03日
8

私はそれを直接行う方法を見つけることができませんでした。

代わりに、bakファイルをSQL Server 2008 Expressにインポートしてから、 MySQL MigrationToolkitを使用しました。

チャームのように働いた!

Indrajith Ekanayake picture
2020年01月02日
5

この問題では、回答がタイムリーに更新されません。 ですから、2020年MsSQLからMySQL移行するのはとても簡単だと言って嬉しいです。 RebaseDataのようなオンラインコンバーターはワンクリックであなたの仕事をします。 MsSQLからの.bakファイルをアップロードして、 MySQL読み取れる.sql形式に変換するだけです。

追記:これ.bakファイルを変換できるだけでなく、このサイトは必要なすべてのタイプのデータベース移行に対応しています。

Levi Rosol picture
2008年10月01日
3

私のMySQLのバックグラウンドは限られていますが、それを行うのはそれほど幸運ではないと思います。 ただし、データベースをMSSQLサーバーに復元し、SSISまたはDTSパッケージを作成してテーブルとデータをMySQLサーバーに送信することで、すべてのデータを移行できるはずです。

お役に立てれば

The Aelfinn picture
2016年10月14日
2

SQL Serverの.bakファイルはそのデータベースダイアレクトに固有であり、MySQLとは互換性がありません。

etlalchemyを使用して、

クイックインストールと例はここgithubページにあり、プロジェクトの起源のより詳細な説明はここにあります

Charles Graham picture
2008年10月01日
1

私はそれを非常に疑っています。 Leviが言うように、これを行うにはDTS / SSISを使用することをお勧めします。 実際にデータをインポートせずにプロセスを開始することをお勧めします。 基本的なテーブル構造をまとめるのに十分なことをしてください。 次に、結果のテーブル構造を変更する必要があります。これは、tatが作成される可能性のある構造は、せいぜい不安定になるためです。

また、これをさらに一歩進めて、すべてのデータの最初のna文字列(varchar)形式を取り込むステージング領域を作成する必要がある場合もあります。 次に、検証と変換を行って「実際の」データベースに取り込むスクリプトを作成できます。これは、2つのデータベースが、特に日付を処理する場合に、常にうまく機能するとは限らないためです。

CyberFonic picture
2008年10月01日
1

SQL Serverデータベースは、Microsoft独自のものです。 私が考えることができる2つのオプションは次のとおりです。

  1. データベースをCSV、XML、または同様の形式でダンプし、MySQLにロードします。

  2. MySQLへのODBC接続をセットアップしてから、DTSを使用してデータを転送します。 Charles Grahamが示唆しているように、これを行う前にテーブルを作成する必要があるかもしれません。 ただし、SQL EnterpriseManagerウィンドウから対応するMySQLウィンドウにカットアンドペーストするのと同じくらい簡単です。

Traveling_Monk picture
2009年09月19日
1

私が使用した方法には、リチャード・ハリソンの方法の一部が含まれていました。

したがって、SQL Server 2008Expressエディションをインストールします。

これには、Webプラットフォームインストーラー「wpilauncher_n.exe」のダウンロードが必要です。これをインストールしたら、データベースの選択をクリックします(フレームワークとランタイムもダウンロードする必要があります)。

インストール後、Windowsのコマンドプロンプトに移動し、次の手順を実行します。

sqlcmd -S \ SQLExpressを使用します(管理者としてログインしている間)

次に、次のコマンドを発行します。

disk = 'c:\ temp \ mydbName-2009-09-29-v10.bak'からfilelistonlyを復元します。 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をインストールし、データベースを参照してデータがそこにあることを確認しました...

その時点で、MSSQL「SQLインポートおよびエクスポートウィザード」に含まれているツールを試しましたが、csvダンプの結果には列名のみが含まれていました...

その代わりに、SQL Server ManagementStudioから「select * fromusers」などのクエリの結果をエクスポートしました。

Andrew picture
2011年08月25日
1

上記のリチャードの解決策を試みている人のために、一般的なエラーをナビゲートするのに役立つ可能性のあるいくつかの追加情報があります。

1)restore filelistonlyを実行すると、オペレーティングシステムエラー5(アクセスが拒否されました)が発生する場合があります。 その場合は、SQL Server構成マネージャーを開き、SQLEXPRESSのログインをローカルの書き込み権限を持つユーザーに変更します。

2)@ "これにより、バックアップの内容が一覧表示されます。必要なのは、論理名を示す最初のフィールドです"-ファイルに3つ以上のヘッダーが表示されている場合は、それらのファイルの処理方法も考慮する必要があります。 RESTOREDATABASEコマンド。 データベースとログ以外のファイルをどう処理するかを指定しない場合、システムは.bakファイルにリストされている属性を使用しようとするようです。 他の誰かの環境からファイルを復元すると、 'パスに無効な属性があります。 ディレクトリである必要があります(問題のパスがマシンに存在しないため)。 MOVEステートメントを指定するだけで、この問題は解決します。

私の場合、3番目のFTDataタイプのファイルがありました。 追加したMOVEコマンド:

MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf',
MOVE 'sysft_...' TO 'c:\temp\other';

私の場合、実際には3番目のファイル用に新しいディレクトリを作成する必要がありました。 最初は.mdfファイルと同じフォルダーに送信しようとしましたが、復元を実行すると、3番目のFTDataファイルで「正しく初期化できませんでした」というエラーが発生しました。