2009-09-10 33 views
0

我有一個應用程序,它已經準備好去住,一旦我們把數據從一個MS Access數據庫,並將其導入到SQL Server 2005中我已經使用了遷移 - Access工具,以獲得將數據庫訪問到SQL Server中,但現在我需要從該表中獲取數據並將其放入應用程序要使用的表中。是否有一種T-SQL方法來插入多行,同時「重新映射」數據?SQL Server 2005的T-SQL重新映射列

例如

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

我知道,選擇*進入工程時列名是相同的,但

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

的部分是什麼,我真的需要去工作。

任何想法?

回答

1

相信SELECT INTO語法用於創建新表。如果要將剛剛導入的表中的數據映射到其他現有表,請嘗試使用普通的INSERT。例如:

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

列從test_users到prod_users的映射是基於它們列出,即,在第一列中的次序上的「prod_users(COLUMN_NAMES,...)」的第一列中相匹配的「 SELECT other_col_names,...「,第二個匹配第二個,等等。因此,在上面的代碼示例中,ID被映射到user_id,並且LAST_NAME被映射到last_name,依此類推。

只要確保你有相同數量的列在每個列表和列類型匹配(或可轉換爲匹配)。請注意,您不必指定任一表中的所有列(只要目標表具有未指定列的有效默認值即可)。

INSERT syntax的細節;與你的問題相關的部分是「execute_statement」表達式。

1

INSERT和SELECT是magic關鍵字:

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

也許你能具體談談你的意思是通過重新映射是什麼?您的評論

基地,更具體的查詢是:

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

在接入分貝表,有列 'ID', 'FIRST_NAME' 和 'LAST_NAME'。在所有的訪問用戶表中,我需要'ID'值來訪問user_id,'LAST_NAME'值到'lastName'等等......我知道這有點小事,但我們不想重命名任何列我們的SQL服務器表,並且由於有多個訪問用戶表,我不能只重命名一個並更改它的列名 – 2009-09-10 22:58:00