2010-03-11 5 views
2

Nous essayons d'assembler deux bases de données différentes, mais les deux bases de données utilisent les mêmes ID. Différentes informations mais nous aurions deux utilisateurs avec le même ID. Existe-t-il un moyen de changer les ID dans une base de données, puis de mettre à jour chacune des tables à l'aide de cet ID?Modification des ID et mise à jour des tables

Répondre

2

Si vous avez aucune dépendance à prendre en charge, une solution très simple bêtement vient à l'esprit:

pseudocode:

SELECT max(id) FROM database1.tablename 
// Returns 10389 

UPDATE database2.tablename SET id = (id + 10389) 
// Sets 1st record to 10390 
//  2nd record to 10391 
//  3rd record to 10392 
...... 
0

Si la colonne d'identifiant d'incrémentation automatique, vous pouvez juste faire:


SELECT //(columns except id) 
INTO new_table_name [IN otherdatabase] 
FROM old_tablename 

et tadaa!

0

Nous travaillons sur un projet comme celui-ci et la réponse est des tables de mise en scène. Mettez en scène les données que vous allez insérer et ajoutez une colonne pour le nouvel identifiant. Insérez les enregistrements parents et mettez à jour le nouvel ID dans la table de transfert (le serveur SQL l'aide avec la clause de sortie, je ne sais pas pour les autres dbs). Maintenant, lorsque vous insérez les enregistrements enfants, vous utilisez le nouvel identifiant au lieu de l'ancien. Une alternative consiste à ajouter une colonne pour l'ancien ID à la table parent. Utilisez-le pour vous joindre afin d'obtenir le nouvel identifiant lors de l'insertion dans des tables enfants. Lorsque toutes les données sont migrées, supprimez la colonne.

0

suppose aucun autre traitement va dans la base de données 1 ou base de données 2, pour cette solution:

1) supprimer toutes les clés étrangères Dans la base de données 1 get ID max

2) dans la base de données 2, connexes 3) dans la base de données 2, sur la table où ID est un incrément/identité automatique, vous devrez ajouter une nouvelle colonne ID2 et la remplir avec UPDATE YourTable SET ID2=ID+{max ID from database 1}, puis supprimer la colonne ID originale, puis renommer ID2 à ID

4) dans databa SE2, pour toutes les autres tables qui utilisent cet ID comme FK, modifier les ID utilisant UPDATE OtherTable SET ID=ID+{max ID from database 1}

5) dans la base de données 2, restaurer les clés étrangères pour valider les données

6) dans la base de données 2, exporter les données vers un déposer

7) dans la base de données 1, importer le fichier de base de données 2

Questions connexes