Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DUMP LOAD D'UNE BASE DE DONNÉES


Information sur la source

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é: 3 787 / 69

Note :
Aucune note

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

Pour les "Membres Club", vous pouvez 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

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 calculer l'age d'une personne [ par slante ] HelloJ'ai creer une table en Oracle XE pour un arbre genealogique, j'ai besoin d'une query qui retourne l'age des personnes :vivantes, base sur la dat MySQL vers MsSQL [ par dragon ] Bonjour,je dois migrer un forum de discution de MySQL vers MsSQL 2000 ou 2005. Bon en gros ça avance bien, sauf que je bloque sur un point, comme simu impossible de créer une nouvelle BdD! Visual studio pas bien installé? [ par feuillou ] Bonjour à tous,bien entendu j'ai un problème! Je veux travailler sur Visual studio .NET 2003 pour modifier un soft développé il y a deux ans. Ce que j Lecture d'une base via DSN et ODBC sur Linux [ par Lucinda000 ] Bonjour à tous, Je souhaite accéder à une base access sur un PC Linux en Red Hat 3. Sur ce PC, il y a donc mon fichier *.mdb et Oracle version 9.2.0 A Oracle -> MySql [ par creazydev ] Bonjour à tous,Je dois développer une plate forme web qui en php/mysql, pour alimenter ma base je dois récuperer des donner dans une base oracle 8.1.M base de données [ par daojan ] salut a tous,je dois creer  une page qui recupère des données dans une base sur un serveur sql et je dois faire un algorythme qui trie par jour et par


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.