Я искал раньше и не мог найти никаких ответов.
Давайте представим сценарий, в котором у нас есть 2 таблицы:
- Customer
- Order
И 2 базы данных:
- DB1
- DB2
Клиент:
- ID внутр.
- Имя varchar
Заказ :
- ID внутр.
- идентификатор клиента,
DB1 и DB2 имеют одинаковую структуру таблиц и содержат разные данные.
Теперь предположим, что я хочу выполнить этот запрос:
INSERT INTO
DB1.dbo.Order
SELECT
ID, CustomerID
FROM
DB2.dbo.Order AS db2Order
LEFT JOIN
DB2.dbo.Customer AS db2Cust
ON
db2Order.CustomerID = db2Cust.ID
Этот запрос работает так, как ожидалось. Теперь давайте представим сценарий, в котором у вас есть более 20 столбцов в таблице, и вы не хотите проходить и указывать их все, я хочу сделать что-то вроде этого:
INSERT INTO
DB1.dbo.Order
SELECT
(
SELECT COLUMN_NAME
FROM DB1.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Order'
)
FROM
DB2.dbo.Order AS db2Order
LEFT JOIN
DB2.dbo.Customer AS db2Cust
ON
db2Order.CustomerID = db2Cust.ID
Поскольку мы ПРИСОЕДИНЯЕМ таблицы, мы должны указать столбцы, поскольку они не будут соответствовать структуре таблицы Order, так как мы пытаемся вставить, мы должны удовлетворить это исключение: Column name or number of supplied values does not match table definition.
Есть ли обходной путь через это? Я был бы рад услышать, если у кого-нибудь есть какие-либо идеи, пожалуйста. Спасибо за ваше время, читая это!