Comment importer un serveur SQL.bak file dans MySQL?

le titre se passe d'explication. Est-il un moyen de directement faire ce genre d'importation?

53
demandé sur Marcel 2008-10-01 08:49:53

10 réponses

The .Les fichiers BAK de SQL server sont au format de bande de Microsoft (MTF) réf: http://www.fpns.net/willy/msbackup.htm

le fichier bak contiendra probablement les fichiers LDF et MDF que SQL server utilise pour stocker la base de données.

vous aurez besoin d'utiliser SQL server pour les extraire. SQL Server Express est gratuit et fera l'affaire.

donc, installez SQL Server Express edition, et ouvrez le serveur SQL Powershell. Il exécute sqlcmd -S <COMPUTERNAME>\SQLExpress (alors que connecté en tant qu'administrateur)

émet la commande suivante.

restore filelistonly from disk='c:\temp\mydbName-2009-09-29-v10.bak';
GO

Cette liste le contenu de la sauvegarde - ce que vous avez besoin est la première champs que vous dire les noms logiques - la base de données réelle et l'autre le fichier journal.

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

à ce point, vous avez extrait la base de données - puis installer Microsoft" Sql données Web Administrateur." avec cet outil d'exportation et vous aurez un script SQL qui contient la base de données.

61
répondu Richard Harrison 2015-05-27 15:42:32

je n'ai pas réussi à trouver un moyen de le faire directement.

à la place, j'ai importé le fichier BAK dans SQL Server 2008 Express, puis utilisé MySQL Migration Toolkit .

a fonctionné comme un charme!

8
répondu Marcel 2008-10-03 01:19:06

MySql ont une application pour importer db à partir de Microsoft sql. Étapes:

  1. Open MySql Workbench
  2. cliquez sur" Migration de la base de données "(si elle ne s'affiche pas, vous devez l'installer à partir de MySql update)
  3. suivez la liste des tâches de Migration en utilisant l'assistant simple.
6
répondu AutoCiudad 2012-12-09 02:03:42
  1. Open SQL Server Management Studio sur votre machine locale.
  2. faites un clic droit sur le dossier Bases de données. Dans le menu contextuel, sélectionnez Nouvelle Base de données.
  3. entrez un nom de base de données, puis cliquez sur Ok.
  4. faites un clic droit sur l'icône de la nouvelle base de données. Dans le menu contextuel, sélectionnez Tâches- > Restore - > Database.
  5. sélectionnez L'option from Device, puis cliquez sur le bouton browse.
  6. cliquez Ajouter et naviguer dans le fichier approprié. Cliquez Sur Ok.
  7. dans la fenêtre de la base de données de restauration, sélectionnez la case à cocher à côté de votre fichier BAK.
  8. passez à la page des Options. Sélectionnez la case à cocher de la base de données existante. Cliquez Sur Ok.
  9. vérifiez le contenu de votre base de données, qui est maintenant active sur votre machine locale.
3
répondu RollerCosta 2011-11-21 10:17:57

bien que mon expérience MySQL soit limitée, Je ne pense pas que vous ayez beaucoup de chance de le faire. Cependant, vous devriez pouvoir migrer toutes vos données en rétablissant la base de données sur un serveur MSSQL, puis en créant un paquet SSIS ou DTS pour envoyer vos tables et vos données au serveur MySQL.

espérons que cette aide

2
répondu Levi Rosol 2008-10-01 04:52:34

j'en doute fort. Vous pourriez vouloir utiliser DTS/SSIS pour faire cela comme Levi le dit. Un pense que vous pourriez vouloir faire est de commencer le processus sans importer réellement les données. Faites juste assez pour obtenir les structures de base de table ensemble. Alors vous allez vouloir changer autour de la structure de table résultante, parce que quelle que structure tat sera probablement créé sera Tremblant au mieux.

vous pourriez aussi avoir à faire un pas de plus et créer une zone de transit cela prend dans toutes les données d'abord n une chaîne de caractères (varchar) forme. Ensuite, vous pouvez créer un script qui effectue la validation et la conversion pour le mettre dans la "vraie" base de données, parce que les deux bases de données ne fonctionnent pas toujours bien ensemble, surtout lorsqu'il s'agit de dates.

0
répondu Charles Graham 2008-10-01 05:03:28

la méthode que J'ai utilisée incluait une partie de la méthode de Richard Harrison:

donc, installer SQL Server 2008 Express édition,

cela nécessite le téléchargement de L'installateur de plate-forme Web "wpilauncher_n.exe" Une fois que vous l'avez installé, cliquez sur la sélection de la base de données ( vous devez également télécharger les cadres et les exécutables)

Après l'installation, allez à l'invite de commande windows et:

utiliser sqlcmd-s \SQLExpress (tandis que connecté en tant qu'administrateur)

émet la commande suivante.

restaurer filelistonly de disk='c:\temp\mydbName-2009-09-29-v10.bak'; ACCÉDEZ à Cette liste le contenu de la sauvegarde - ce que vous avez besoin est la première les champs qui vous indiquent les noms logiques - l'un sera la base de données actuelle et l'autre le fichier journal.

RESTORE Base de données mydbName FROM disk='c:\temp\mydbName-2009-09-29-v10.BAK 'WITH MOVE 'mydbName' TO "c:\temp\mydbName_data.mdf", "mydbName_log" TO "c:\temp\mydbName_data.ldf'; GO

j'ai démarré L'installateur de plate-forme Web et depuis L'onglet Quoi de neuf J'ai installé SQL Server Management Studio et j'ai parcouru la base de données pour m'assurer que les données étaient là...

à ce point j'ai essayé l'outil inclus avec MSSQL " SQL importation et exportation Assistant" mais le résultat du dump csv ne comprenait que les noms de colonnes...

donc à la place je viens d'exporter les résultats des requêtes comme "select * de la part des utilisateurs" à partir du SQL Server Management Studio

0
répondu Traveling_Monk 2009-09-19 07:31:32

bases de données SQL Server sont très Microsoft propriétaire. Deux options me viennent à l'esprit:

  1. Vidage de la base de données en CSV, XML ou un format similaire que vous pouvez charger dans MySQL.

  2. configurer la connexion ODBC à MySQL et ensuite en utilisant DTS transporter les données. Comme Charles Graham l'a suggéré, vous pourriez avoir besoin de construire les tables avant de faire cela. Mais c'est aussi facile qu'une coupe et coller de SQL Enterprise Manager windows à la fenêtre MySQL correspondante.

0
répondu CyberFonic 2009-09-19 07:43:07

pour ceux qui tentent la solution de Richard ci-dessus, voici quelques informations supplémentaires qui pourraient aider à naviguer erreurs communes:

1) lors de l'exécution de restore restore filelistonly vous pouvez obtenir l'erreur du système D'exploitation 5(L'accès est refusé). Si c'est le cas, ouvrez SQL Server Configuration Manager et changez le login de SQLEXPRESS pour un utilisateur qui a les privilèges d'écriture locale.

2) @ " ce sera la liste du contenu de la sauvegarde - ce dont vous avez besoin est la première champs qui vous indiquent les noms logiques" - si votre fichier contient plus de deux en-têtes, vous devrez également rendre compte de ce qu'il faut faire avec ces fichiers dans la commande restaurer la base de données. Si vous n'indiquez pas ce qu'il faut faire avec les fichiers au-delà de la base de données et du journal, le système va apparemment essayer d'utiliser les attributs énumérés dans le .bak fichier. Restaurer un fichier à partir de l'environnement de quelqu'un d'autre produira un 'le chemin a des attributs invalides. Il faut que ce soit un répertoire" (car le chemin en question ne existent sur votre ordinateur). Le simple fait de fournir une déclaration de déménagement résout ce problème.

dans mon cas, il y avait un troisième fichier de type FTData. La commande MOVE I a ajouté:

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

dans mon cas, j'ai dû créer un nouveau répertoire pour le troisième fichier. Au départ, j'ai essayé de l'envoyer dans le même dossier que le .le fichier mdf mais cela a produit une erreur 'n'a pas réussi à initialiser correctement' sur le troisième fichier FTData quand j'ai exécuté la restauration.

0
répondu Andrew 2011-08-24 17:19:13

The .le fichier BAK de SQL Server est spécifique à ce dialecte de base de données, et non compatible avec MySQL.

essayez d'utiliser etlalchemy pour migrer votre base de données SQL Server dans MySQL. C'est un outil open-sourcing que j'ai créé pour faciliter les migrations entre différents RDBM.

installation rapide et des exemples sont fournis ici sur la page github , et une explication plus détaillée de la les origines du projet peuvent être trouvées ici .

0
répondu The Aelfinn 2016-10-14 15:38:14