web-dev-qa-db-fra.com

Comment importer un fichier .bak SQL Server dans MySQL?

Le titre est explicite. Existe-t-il un moyen de faire directement ce genre d’importation?

56
Marcel

Les fichiers .BAK de SQL Server sont au format MTF (Microsoft Tape Format) 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 devrez utiliser SQL Server pour les extraire. SQL Server Express est gratuit et fera le travail.

Installez donc SQL Server Express edition et ouvrez SQL Server Powershell. Là, exécutez sqlcmd -S <COMPUTERNAME>\SQLExpress (en étant connecté en tant qu'administrateur)

puis émettez la commande suivante.

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

Cela va lister le contenu de la sauvegarde - ce dont vous avez besoin, ce sont les premiers champs qui vous indiquent les noms logiques - l'un sera 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 stade, vous avez extrait la base de données - puis installez l'administrateur de SQL Web Data ". Avec cet outil d'exportation et vous obtiendrez un script SQL contenant la base de données.

62
Richard Harrison

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

Au lieu de cela, j'ai importé le fichier bak dans SQL Server 2008 Express, puis utilisé MySQL Migration Toolkit .

Travaillé comme un charme!

8
Marcel

MySql propose une application pour importer la base de données à partir de Microsoft sql . 

  1. Ouvrez MySql Workbench
  2. Cliquez sur "Migration de base de données" (s'il n'apparaît pas, vous devez l'installer depuis la mise à jour de MySql)
  3. Suivez la liste des tâches de migration à l'aide de l'assistant simple.
7
AutoCiudad
  1. Ouvrez SQL Server Management Studio sur votre ordinateur local.
  2. Cliquez avec le bouton 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. Cliquez avec le bouton droit sur l'icône de la nouvelle base de données. Dans le menu contextuel, sélectionnez Tâches -> Restaurer -> Base de données.
  5. Sélectionnez l'option Depuis le périphérique, puis cliquez sur le bouton Parcourir.
  6. Cliquez sur Ajouter et naviguez jusqu'au fichier approprié. Cliquez sur OK.
  7. Dans la fenêtre Restaurer la base de données, cochez la case en regard de votre fichier BAK.
  8. Passez à la page Options. Cochez la case Remplacer 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 ordinateur local.
2
RollerCosta

Bien que mon expérience MySQL soit limitée, je ne pense pas que vous ayez beaucoup de chance en ce sens. Cependant, vous devriez pouvoir migrer sur toutes vos données en restaurant la base de données sur un serveur MSSQL, puis en créant un package SSIS ou DTS pour envoyer vos tables et données au serveur MySQL.

j'espère que cela t'aides

2
Levi Rosol

Pour ceux qui tentent la solution de Richard ci-dessus, voici quelques informations supplémentaires qui pourraient aider à résoudre les erreurs courantes:

1) Lors de l'exécution de restore filelistonly, l'erreur de système d'exploitation 5 peut être rencontrée (l'accès est refusé). Si tel est le cas, ouvrez le Gestionnaire de configuration SQL Server et remplacez l'identifiant de connexion par SQLEXPRESS par un utilisateur disposant de privilèges d'écriture locaux.

2) @ "Ceci listera le contenu de la sauvegarde - ce dont vous avez besoin, ce sont les premiers champs qui vous indiquent les noms logiques" - si votre fichier contient plus de deux en-têtes, vous devrez également indiquer comment utiliser ces fichiers. la commande RESTORE DATABASE. Si vous n'indiquez pas quoi faire avec les fichiers autres que la base de données et le journal, le système tentera apparemment d'utiliser les attributs répertoriés dans le fichier .bak. La restauration d'un fichier à partir de l'environnement d'une autre personne produira un 'Le chemin a des attributs non valides. Il doit s'agir d'un répertoire '(car le chemin en question n'existe pas sur votre machine) . Fournir simplement une instruction MOVE résout ce problème. 

Dans mon cas, il y avait un troisième fichier de type FTData. La commande MOVE que j'ai ajoutée:

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. Initialement, j'ai essayé de l'envoyer dans le même dossier que le fichier .mdf, mais cela a généré une erreur «Echec de l'initialisation correcte» sur le troisième fichier FTData lorsque j'ai exécuté la restauration.

0
Andrew

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

Installez donc SQL Server 2008 Express édition,

Cela nécessite le téléchargement du programme d'installation de la plate-forme Web "wpilauncher_n.exe" Une fois l'installation installée, cliquez sur la sélection de base de données (vous devez également télécharger Frameworks et Runtimes).

Après l’installation, allez à la commande windows Invite et:

utilisez sqlcmd -S\SQLExpress (alors que connecté en tant qu'administrateur)

puis émettez la commande suivante.

restaurer filelistonly à partir de disk = 'c:\temp\mydbName-2009-09-29-v10.bak'; GO Ceci listera le contenu du fichier sauvegarde - ce dont vous avez besoin est le premier champs qui vous indiquent les noms logiques - l'un sera la base de données proprement dite 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'; ALLER

J'ai lancé Web Platform Installer et à partir de l'onglet Nouveautés, j'ai installé SQL Server Management Studio et consulté la base de données pour m'assurer que les données étaient présentes ...

À ce stade, j'ai essayé l'outil inclus dans MSSQL "Assistant d'importation et d'exportation SQL", mais le résultat du vidage CSV n'incluait que les noms de colonne ...

Au lieu de cela, j’ai simplement exporté les résultats de requêtes du type "select * from users" de SQL Server Management Studio.

0
Traveling_Monk

J'en doute fortement. Vous voudrez peut-être utiliser DTS/SSIS pour le faire, comme le dit Levi. Une idée que vous voudrez peut-être faire est de démarrer le processus sans importer les données. Faites juste assez pour rassembler les structures de base de la table. Ensuite, vous voudrez changer autour de la structure de la table résultante, car quelle que soit la structure à créer, elle sera au mieux fragile.

Vous devrez peut-être aussi aller plus loin et créer une zone de stockage intermédiaire qui prend en premier toutes les données sous forme de chaîne (varchar). Ensuite, vous pouvez créer un script qui effectue la validation et la conversion pour l’intégrer dans la "vraie" base de données, car les deux bases de données ne fonctionnent pas toujours ensemble, en particulier lorsqu’il s’agit de dates.

0
Charles Graham

Les bases de données SQL Server sont très propriétaires de Microsoft. Les deux options auxquelles je peux penser sont:

  1. Videz la base de données au format CSV, XML ou similaire, que vous chargeriez ensuite dans MySQL.

  2. Configurez la connexion ODBC à MySQL, puis utilisez DTS pour transporter les données. Comme l'a suggéré Charles Graham, vous devrez peut-être créer les tables avant de le faire. Mais cela est aussi simple qu’un copier-coller des fenêtres de SQL Enterprise Manager vers la fenêtre MySQL correspondante.

0
CyberFonic

Le fichier .bak de SQL Server est spécifique à ce dialecte de base de données et n'est pas compatible avec MySQL.

Essayez d’utiliser etlalchemy pour migrer votre base de données SQL Server vers MySQL. C'est un outil open source que j'ai créé pour faciliter les migrations entre différents SGBDR. 

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

0
The Aelfinn