2009-09-10 7 views
0

J'ai une application prête à être mise en ligne, une fois que nous prenons des données d'une base de données MS Access et les importons dans SQL Server 2005. J'ai utilisé l'outil Migration - Accès pour obtenir Accédez à db dans SQL Server, mais maintenant je dois prendre les données de cette table et les mettre dans les tables que notre application va utiliser. Existe-t-il une méthode T-Sql pour insérer plusieurs lignes, tout en «mappant» les données?Colonnes de remappage T-SQL SQL Server 2005

Par exemple

SELECT ID, FIRST_NAME, LAST_NAME 
INTO prod_users (user_id, first_name, last_name) 
FROM test_users 

Je sais que select * dans des œuvres où les noms de colonnes sont les mêmes, mais le

prod_users (column names, ..., ...) 

partie est ce que je dois vraiment aller travailler.

Des idées?

Répondre

1

Je crois que la syntaxe SELECT INTO est utilisé pour créer de nouvelles tables. Si vous souhaitez mapper des données à partir des tables que vous venez d'importer vers d'autres tables existantes, essayez un INSERT simple. Par exemple:

INSERT INTO prod_users (user_id, first_name, last_name) 
SELECT ID, FIRST_NAME, LAST_NAME 
FROM test_users 

La cartographie des colonnes de test_users à prod_users est basé sur l'ordre qu'ils sont énumérés, à savoir la première colonne « prod_users (column_names, ...) » correspond à la première colonne de la " SELECT other_col_names, ... ", la seconde correspond à la seconde, etc. Par conséquent, dans l'exemple de code ci-dessus, ID est mappé sur user_id et LAST_NAME est mappé sur last_name, et ainsi de suite. Assurez-vous simplement d'avoir le même nombre de colonnes dans chaque liste et que les types de colonnes correspondent (ou peuvent être convertis pour correspondre). Notez que vous n'avez pas besoin de spécifier toutes les colonnes dans les deux tables (tant que la table de destination a des valeurs par défaut valides pour les colonnes non spécifiées).

Voir le INSERT syntax pour plus de détails; la partie pertinente à votre question est l'expression "execute_statement".

1

INSERT et SELECT sont les mots-clés magiques:

insert into new_table (list of columns) select columnA, functionB(), 
(correlated_subquery_C) from table_or_join where critera_expression_is_true 

Peut-être que vous pouvez être plus précis sur ce que vous entendez par re-mapping?

base sur votre commentaire, une requête plus spécifique:

insert into new_table (user_id, firstname, lastname) 
select id, first_name, last_name from old_database..old_table 
+0

Dans les tables db d'accès, il y a des colonnes 'ID', 'FIRST_NAME' et 'LAST_NAME'. Dans toutes les tables utilisateur Access, j'ai besoin des valeurs 'ID' pour aller à user_id, les valeurs 'LAST_NAME' à 'lastName', etc ... Je sais que c'est un peu banal, mais nous ne voulons pas renommer les colonnes dans nos tables de serveur sql, et comme il y a plusieurs tables d'utilisateurs d'accès, je ne peux pas simplement en renommer une et changer les noms de ses colonnes –