2009-09-10 5 views
0

У меня есть приложение, готовое к работе, как только мы берем данные из базы данных MS Access и импортируем их в SQL Server 2005. Я использовал инструмент «Миграция - доступ», чтобы получить Доступ к db в SQL Server, но теперь мне нужно взять данные из этой таблицы и поместить их в таблицы, которые наше приложение будет использовать. Есть ли способ T-Sql для вставки нескольких строк и в то же время «повторного сопоставления» данных?SQL Server 2005 T-SQL refap columns

Например

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, ... ", второй совпадает со вторым и т. Д. Поэтому в примере кода выше идентификатор сопоставляется с user_id, а LAST_NAME сопоставляется с last_name и т. Д.

Просто убедитесь, что у вас одинаковое количество столбцов в каждом списке и что типы столбцов соответствуют (или могут быть преобразованы в соответствие). Обратите внимание, что вам не нужно указывать все столбцы в любой таблице (пока таблица назначения имеет допустимые значения по умолчанию для неуказанных столбцов).

Для получения более подробной информации см. INSERT syntax; часть, относящаяся к вашему вопросу, является выражением «execute_statement».

1

INSERT и SELECT, волшебные слова:

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

в таблицах доступа db, есть идентификаторы столбцов, «FIRST_NAME» и «LAST_NAME». Во всех таблицах пользователей Access мне нужны значения «ID», чтобы перейти к значениям user_id, LAST_NAME «lastName» и т. Д. Я знаю, что это немного путано, но мы не хотим переименовывать любые столбцы в наши таблицы sql-сервера, и поскольку есть несколько пользовательских таблиц доступа, я не могу просто переименовать один и изменить его имена столбцов –