SQL Server 2005 T-SQL переназначить столбцы - PullRequest
0 голосов
/ 11 сентября 2009

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

Например

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

Я знаю, что select * into работает, когда имена столбцов совпадают, но

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

часть - это то, что мне действительно нужно, чтобы получить работу.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 11 сентября 2009

Я считаю, что синтаксис 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 ; часть, относящаяся к вашему вопросу, это выражение "execute_statement".

1 голос
/ 11 сентября 2009

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...