J'ai des .bak
fichiers volumineux provenant d'un vidage SQL Server 2005.
Puis-je les restaurer sans utiliser SQL Server, ni sur PostgreSQL, MySQL, ni sur des fichiers texte plats?
Une solution open source serait très utile.
J'ai des .bak
fichiers volumineux provenant d'un vidage SQL Server 2005.
Puis-je les restaurer sans utiliser SQL Server, ni sur PostgreSQL, MySQL, ni sur des fichiers texte plats?
Une solution open source serait très utile.
Réponses:
Voici ce que je propose:
si la machine virtuelle a suffisamment d'espace pour contenir la sauvegarde mais pas assez pour la restaurer également, vous pouvez effectuer une "restauration virtuelle" en utilisant la version d'essai d'un produit de Red-Gate du même nom (qui vous permet d'interagir avec le fichier de sauvegarde comme s'il avait été restauré). Sinon, restaurez la base de données normalement .
Une fois la base de données disponible (via une restauration normale ou une restauration virtuelle), vous pouvez générer des scripts pour le schéma et les données de la manière suivante:
Alternativement, vous pouvez essayer de jouer avec l' utilitaire bcp pour extraire des données dans des fichiers CSV ou similaires, mais vous devrez le faire table par table ou utiliser des scripts intelligents (PowerShell, T-SQL, C # / SMO, etc. ) pour générer toutes les commandes bcp pour vous. Une fois dans les fichiers CSV, il devrait être trivial de charger en masse les données dans Postgres (mais vous aurez encore du travail pour générer les tables).
Comme dernière suggestion, si le fichier .bak n'est pas ginormous et que les données ne sont pas confidentielles, je suis plus que disposé à essayer de générer des fichiers pour vous dans le format dont vous avez besoin. J'ai beaucoup de machines virtuelles Windows avec de l'espace, le défi serait d'obtenir le fichier .BAK à un endroit où je peux le récupérer - surtout s'il est plus grand que la plupart des services de partage de fichiers pris en charge.
Malheureusement, il n'y a aucun moyen d'accéder au contenu d'un fichier .bak sans avoir une connaissance approfondie de l'intérieur du fichier lui-même. Je peux penser à une personne ici qui pourrait avoir accès à ces informations, mais je ne peux pas dire si cette personne vous dirait comment procéder.
Vous devrez donc installer une instance SQL Server. Vous devrez également vous assurer que cette instance peut parler à votre serveur Postgres (frigging avec le pg_hba.conf) Une fois là-bas, vous avez quelques bons chemins pour migrer les données.
Le premier chemin serait d'installer le pilote ODBC de Postgres Windows et de configurer une connexion au serveur pg. Vous pouvez ensuite utiliser SSIS pour créer un script de migration de données. Si vous allez suivre cette voie, je vous suggère d'installer SSIS lors de l'installation du serveur de base de données.
L'autre option implique également la connexion du pilote ODBC, mais vous pouvez créer un serveur lié dans SQL Server et exécuter des insertions sur l'instance pg via SQL Server. J'ai déjà répondu à cette question ici, donc cela ne devrait pas être difficile à trouver.
ÉDITER
Pour intégrer le commentaire d'Aaron, une fois SQL Server opérationnel, vous pouvez également exporter les données vers des fichiers plats de différentes manières. Si vous choisissez ce chemin, faites-le moi savoir et je posterai quelques façons de le faire
MODIFIER (2):
Le processus de serveur lié n'est peut-être pas la meilleure approche, sauf si vous souhaitez créer les structures à l'avance. C'est ma méthode préférée, mais j'ai généralement déjà la structure en place des deux côtés.
Cela laisse la réponse d'Aaron Bertrand comme la meilleure réponse. Veuillez noter qu'en plus des types de données ( IDENTITY
vs SEQUENCE
, postgres ne sait rien NVARCHAR
depuis que vous avez défini l'encodage sur la base de données elle-même). Postgres n'en sait rien CREATE CLUSTERED INDEX
( CLUSTER
peut fonctionner pour vous). Enfin, comme je vois dans les commentaires que vous allez utiliser des données spatiales, postgresql ne connaît rien à la CREATE SPATIAL INDEX
syntaxe. Vous devrez installer postgis et utiliser le INDEXTYPE
mot - clé pour créer des index spatiaux. Enfin, assurez-vous de gérer les schémas de manière appropriée.
Longue histoire courte: