begin process at 2010 07 29 22:30:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Migration

 > DUMP LOAD D'UNE BASE DE DONNÉES

DUMP LOAD D'UNE BASE DE DONNÉES


 Information sur la source

Note :
Aucune note
Catégorie :Migration Classé sous :DUMP, LOAD, BASE, MIGRATION Niveau :Initié Date de création :14/11/2007 Date de mise à jour :14/11/2007 15:08:20 Vu / téléchargé :4 535 / 91

Auteur : pneau

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note


 Description

dans le cas du passage de SQL 7 à SQL 2000 j'ai été confronté à un probleme. Le classement entre ces 2 moteurs avaient changé.
plusieurs options sont donc possible :
1 - installé SQL 2000 avec le meme classement que sql 7
2 - transférer les données d'une base sql 7 vers sql 2000

j'ai choisi cette seconde option et comme mes clients n'ont pas tous l'outil d'import et d'export de sql, j'ai écrit ce petit script.

Source

  • -- Script de Dump et de load des données d'une base vers une autre
  • -- Note :
  • -- Les 2 bases doivent avoir la meme structure
  • -- si il existe des données dans la base de destination, elles seront supprimées
  • -- Les 2 bases doivent être installées sur le même moteur
  • -- le transfert des données passant par un dossier disque, ne pas oublier de le créer avant
  • -- il est conseillé de désactiver les contraintes d'intégrité avant de lancer le traitement
  • --
  • Set NOCOUNT ON
  • go
  • Declare @BaseSource VarChar(50)
  • Declare @BaseDest VarChar(50)
  • Declare @TableName VarChar(50)
  • Declare @CmdExport VarChar(2000)
  • Declare @CmdImport VarChar(2000)
  • Declare @Requete VarChar(5000)
  • Set @BaseSource = 'NombaseSource'
  • Set @BaseDest = 'Nombasedest'
  • Exec master..Xp_CmdShell 'Del C:\Dump\*.Txt', NO_OUTPUT
  • Exec master..Xp_CmdShell 'Del C:\Dump\Log\*.Log', NO_OUTPUT
  • Declare Cur_Table Cursor For
  • Select name from sysobjects where type='U'
  • And (name like 'T\_%' escape '\' Or name like 'W\_%' escape '\' Or name like 'X\_%' escape '\')
  • Order by Name
  • Open Cur_Table
  • Fetch Next From Cur_Table Into @TableName
  • While @@Fetch_Status = 0
  • Begin
  • Print ''
  • Print '----------> ' + Upper(@TableName) + ' <----------'
  • Print 'Export dans C:\Dump\' + @TableName + '.txt à partir de ' + @BaseSource + '.Dbo.' + @TableName
  • Set @CmdExport = 'BCP "' + @BaseSource + '.Dbo.' + @TableName + '" Out "c:\Dump\' + @TableName + '.txt" -n -V 70 -U sa -P bigboss -E -e C:\Dump\Log\' + @TableName + '_Exp.log -a 65535 -m 10000 -R'
  • --Print @CmdExport
  • Exec master..Xp_CmdShell @CmdExport, NO_OUTPUT
  • --
  • Print 'Vidage de la table ' + @BaseDest + '.Dbo.' + @TableName + ' avant import'
  • Set @Requete = 'Delete ' + @BaseDest + '.Dbo.' + @TableName
  • Exec (@Requete)
  • --
  • Print 'Import dans ' + @BaseDest + '.Dbo.' + @TableName + ' à partir de C:\Dump\' + @TableName + '.txt'
  • Set @CmdImport = 'BCP "' + @BaseDest + '.Dbo.' + @TableName + '" In "c:\Dump\' + @TableName + '.txt" -n -V 70 -U sa -P bigboss -E -e C:\Dump\Log\' + @TableName + '_Imp.log -a 65535 -m 10000 -R'
  • Print @CmdImport
  • Exec master..Xp_CmdShell @CmdImport, NO_OUTPUT
  • Fetch Next From Cur_Table Into @TableName
  • End
  • Close Cur_Table
  • Print ''
  • Print ''
  • Print '----------> Contrôle du nombre d''enregistrements transférés <----------'
  • Open Cur_Table
  • Fetch Next From Cur_Table Into @TableName
  • While @@Fetch_Status = 0
  • Begin
  • Print 'Contrôle de la table : ' + @TableName
  • Set @Requete = 'Declare @NbLgBaseSource Int
  • If Exists(Select Name From ' + @BaseSource + '.Dbo.SysObjects Where Name = ''' + @TableName + ''')
  • Begin
  • Select @NbLgBaseSource = Count(*) From ' + @BaseSource + '.Dbo.' + @TableName + '
  • End
  • Else
  • Begin
  • Set @NbLgBaseSource = 0
  • End
  • Declare @NbLgBaseDest Int
  • If Exists(Select Name From ' + @BaseDest + '.Dbo.SysObjects Where Name = ''' + @TableName + ''')
  • Begin
  • Select @NbLgBaseDest = Count(*) From ' + @BaseDest + '.Dbo.' + @TableName + '
  • End
  • Else
  • Begin
  • Set @NbLgBaseDest = 0
  • End
  • If @NbLgBaseSource <> @NbLgBaseDest
  • Begin
  • Print ''ERREUR --- Nombre de ligne différent entre ' + @BaseSource + '.Dbo.' + @TableName + ''' + ''('' + Cast(@NbLgBaseSource as VarChar) +
  • '') et ' + @BaseDest + '.Dbo.' + @TableName + ''' + ''('' + Cast(@NbLgBaseDest as VarChar) + '')''
  • End'
  • --print @requete
  • Exec (@Requete)
  • Fetch Next From Cur_Table Into @TableName
  • End
  • Close Cur_Table
  • Deallocate Cur_Table
  • Print 'Traitement terminé !'
  • Set NOCOUNT OFF
-- Script de Dump et de load des données d'une base vers une autre 
-- Note : 
--	Les 2 bases doivent avoir la meme structure
--      si il existe des données dans la base de destination, elles seront supprimées
--      Les 2 bases doivent être installées sur le même moteur
--      le transfert des données passant par un dossier disque, ne pas oublier de le créer avant
--	il est conseillé de désactiver les contraintes d'intégrité avant de lancer le traitement
--      
Set NOCOUNT ON
go
Declare @BaseSource 	VarChar(50)
Declare @BaseDest 	VarChar(50)
Declare @TableName	VarChar(50)
Declare @CmdExport	VarChar(2000)
Declare @CmdImport	VarChar(2000)
Declare @Requete	VarChar(5000)
Set @BaseSource = 'NombaseSource'
Set @BaseDest   = 'Nombasedest'
Exec master..Xp_CmdShell 'Del C:\Dump\*.Txt', NO_OUTPUT
Exec master..Xp_CmdShell 'Del C:\Dump\Log\*.Log', NO_OUTPUT

Declare Cur_Table Cursor For
	Select name from sysobjects where type='U'
	And (name like 'T\_%' escape '\' Or name like 'W\_%' escape '\' Or name like 'X\_%' escape '\')
	Order by Name

Open Cur_Table
Fetch Next From Cur_Table Into @TableName
While @@Fetch_Status = 0 
Begin
	Print ''
	Print '----------> ' + Upper(@TableName) + ' <----------'

	Print 'Export dans C:\Dump\' + @TableName + '.txt à partir de ' + @BaseSource + '.Dbo.' + @TableName
	Set @CmdExport = 'BCP "' + @BaseSource + '.Dbo.' + @TableName + '" Out "c:\Dump\' + @TableName + '.txt" -n -V 70 -U sa -P bigboss -E -e C:\Dump\Log\' + @TableName + '_Exp.log -a 65535 -m 10000 -R'
 	--Print @CmdExport
	Exec master..Xp_CmdShell @CmdExport, NO_OUTPUT
-- 
 	Print 'Vidage de la table ' +  @BaseDest + '.Dbo.' + @TableName + ' avant import'
 	Set @Requete = 'Delete ' +  @BaseDest + '.Dbo.' + @TableName 
 	Exec (@Requete)
-- 
 	Print 'Import dans ' +  @BaseDest + '.Dbo.' + @TableName + ' à partir de C:\Dump\' + @TableName + '.txt' 	
 	Set @CmdImport = 'BCP "' + @BaseDest + '.Dbo.' + @TableName + '" In "c:\Dump\' + @TableName + '.txt" -n -V 70 -U sa -P bigboss -E -e C:\Dump\Log\' + @TableName + '_Imp.log -a 65535 -m 10000 -R'
 	Print @CmdImport
	Exec master..Xp_CmdShell @CmdImport, NO_OUTPUT

	Fetch Next From Cur_Table Into @TableName
End
Close Cur_Table

Print ''
Print ''
Print '----------> Contrôle du nombre d''enregistrements transférés <----------'
Open Cur_Table
Fetch Next From Cur_Table Into @TableName
While @@Fetch_Status = 0 
Begin
	Print 'Contrôle de la table : ' + @TableName
	Set @Requete = 'Declare @NbLgBaseSource Int
			If Exists(Select Name From ' + @BaseSource + '.Dbo.SysObjects Where Name = ''' + @TableName + ''')
			Begin
				Select @NbLgBaseSource = Count(*) From ' + @BaseSource + '.Dbo.' + @TableName + '
			End
			Else
			Begin
				Set @NbLgBaseSource = 0
			End
			Declare @NbLgBaseDest	Int
			If Exists(Select Name From ' + @BaseDest + '.Dbo.SysObjects Where Name = ''' + @TableName + ''')
			Begin
				Select @NbLgBaseDest = Count(*) From ' + @BaseDest + '.Dbo.' + @TableName + '
			End
			Else
			Begin
				Set @NbLgBaseDest = 0
			End
			If @NbLgBaseSource <> @NbLgBaseDest
			Begin
				Print ''ERREUR --- Nombre de ligne différent entre ' + @BaseSource + '.Dbo.' + @TableName + ''' + ''('' + Cast(@NbLgBaseSource as VarChar) + 
				'') et ' + @BaseDest + '.Dbo.' + @TableName + ''' + ''('' + Cast(@NbLgBaseDest as VarChar) + '')''
			End'
	--print @requete
	Exec (@Requete)
	Fetch Next From Cur_Table Into @TableName
End
Close Cur_Table
Deallocate Cur_Table
Print 'Traitement terminé !'

Set NOCOUNT OFF

 Conclusion

cez n'est peut etre pas la meilleure solution mais en tout cas cela marche.

a vos claviers pour les critiques

Pat

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

14 novembre 2007 15:08:20 :
Faute de frappe dans la description

 Sources du même auteur

RÉINDEXER TOUTES LES TABLES D'UNE BASE DE DONNÉES
Source avec Zip REQUETES DE DÉSACTIVATION ET DE RÉACTIVATIONS DES CONTRAINTE...

 Sources de la même categorie

SQL SERVER 2000 - EXPORTER LES COMPTES UTILISATEURS SQL ET N... par fabrice69
SQL SERVER 2000 - COMPACTER TOUTES LES BASES DE DONNÉES DU S... par fabrice69
SQL SERVER - RESTAURER UNE BASE ET REJOUER LE LOG DE TRANSAC... par fabrice69
SQL SERVER - RESTAURER UNE BASE DEPUIS UN BACKUP par fabrice69

 Sources en rapport avec celle ci

SQL SERVER 2000 - EXPORTER LES COMPTES UTILISATEURS SQL ET N... par fabrice69
SQL SERVER - RESTAURER UNE BASE ET REJOUER LE LOG DE TRANSAC... par fabrice69
LISTE DES BASES,TABLES ET COLONNES TRIÉS PAR TYPE (PROCEDURE... par crilun
COMMENT RENOMMER UNE BASE DE DONNEES EN PRODUCTION ! par kechia
LISTER LES BASES DE DONNÉES D'UN SQLSERVER 2000 par Crazyht

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

migration Data [ par ehod3011 ] Bonjour je cherche a automatiser une migration data d'une base X sqlServeur2000  vers une base Y SQLServeur 2000 quelque aurait une procedure afin migration de base de donnée SQL Server vers Oarcle 9i [ par issam164 ] Bonjour, Je recherche tout retour d'expérience, méthodes ,outils pour migration de serveur SQL Server vers Oracle V9iMe sqlbase migration vers une sgbdr ???? [ par neonours33 ] bonjour,j'ai un petit problème !!!!!!j'ai une base de données sous SQLbase 6.1 qui tourne sous NT4 ,enfi le super rêve ,mais ça tourne ...le serveur s Migration de données d'un fichier plat vers une base de données SQL en utilisant SSIS [ par OmarEK ] Bonjour,J'ai des données dans un fichier plat ".txt" que je voudrais migrer vers une table de base de données SQL en utilisant SSIS, en comparant les A la recherche d'un programme low-cost pour la migration de données et l'ETL [ par Ncasty ] Bonjour, je suis entrain de mettre en place une base de données pour mon entreprise. Nous sommes une PME en pleine expansion, commercialisant des livr migration d'une base de données mdb vers sql de structure différentes [ par serialnumber2010 ] Bonjour, Existe t'il un moyen de migration d'une base de données mdb ou d'autres types vers sql tout en sachant que la structure est différente. je Problème de migration : transfert "figé" [ par enricococo40 ] Bonjour à tous, je rencontre un problème lors de la migration d'une base de donnée SQL SERVER 2005 vers une base MySQL. J'utilise l'outil de migrati Recherche base de données [ par Popofounet ] Bonjour, Je ne sais pas si je suis au bon endroit pour poster ce message. J'aurai besoin de votre aide pour l'écriture d'une base de données. Je dois MS SQLServer vers MySQL [ par matdev62 ] Bonjour à tous, je découvre l'outil MySQL Migration ToolKit pour le transfert de base MSSQLSERVER vers MYSQL. Pour le transfert des tables et des donn Mettre en attente les données d'un formulaire avant publication [ par Laura96 ] Salut ! Je bosse actuellement sur site internet ou je crée un formulaire (Joomla avec le composant Chronoforms). Sur mon site, en partie publique, il


Nos sponsors


Sondage...

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales