Подтвердить что ты не робот

Скопировать данные из таблицы в одной базе данных в другую отдельную базу данных

В основном у меня есть две базы данных на SQL Server 2005.

Я хочу взять данные таблицы из одной базы данных и скопировать ее в другую таблицу базы данных.

Я пробовал это:

SELECT * INTO dbo.DB1.TempTable FROM dbo.DB2.TempTable

Это не сработало.

Я не хочу использовать восстановление, чтобы избежать потери данных...

Любые идеи?

4b9b3361

Ответ 1

SELECT... INTO создает новую таблицу. Вам нужно использовать INSERT. Кроме того, вы изменили имена базы данных и владельцев.

INSERT INTO DB1.dbo.TempTable
SELECT * FROM DB2.dbo.TempTable

Ответ 2

Это db1.dbo.TempTable и db2.dbo.TempTable

Схема именования с четырьмя частями:

ServerName.DatabaseName.Schema.Object

Ответ 3

SELECT * INTO требует, чтобы таблица назначения не существовала.

Попробуйте это.

INSERT INTO db1.dbo.TempTable
 (List of columns here)
SELECT (Same list of columns here)
FROM db2.dbo.TempTable

Ответ 4

Трудно сказать, не представляя, что вы подразумеваете под словом "это не сработало". Есть много вещей, которые могут пойти не так, и любой совет, который мы даем в поиске и устранении неисправностей одного из этих путей, может еще больше помочь вам найти решение, которое может быть очень простым.

Вот что-то, что я бы искал,

В таблицу, в которую вы импортируете, должна быть включена идентификационная вставка, если эта таблица содержит поле идентификации, и вы его вручную поставляете. Идентификационная вставка также может быть включена только для одной таблицы за раз в базе данных, поэтому вы должны помнить о ее включении для таблицы, а затем отключить ее сразу же после того, как вы сделали импорт.

Кроме того, попробуйте указать все ваши поля

INSERT INTO db1.user.MyTable (Col1, Col2, Col3)
SELECT Col1, COl2, Col3 FROM db2.user.MyTable

Ответ 5

Мы можем назвать три элемента, например имя_базы_объекта..объект_имя

Следующий запрос создаст таблицу в нашей базе данных (без ограничений)

SELECT * 
INTO DestinationDB..MyDestinationTable 
FROM SourceDB..MySourceTable 

В качестве альтернативы вы можете:

INSERT INTO DestinationDB..MyDestinationTable 
SELECT * FROM SourceDB..MySourceTable

Если таблица назначения существует и пуста.

Ответ 6

INSERT INTO DB1.dbo.TempTable
SELECT * FROM DB2.dbo.TempTable

Если мы будем использовать этот запрос, он вернет Primary key error.... Поэтому лучше выбрать, какие столбцы нужно переместить, например

INSERT INTO db1.dbo.TempTable // (List of columns here)
SELECT (Same list of columns here)
FROM db2.dbo.TempTable

Ответ 7

Не забудьте вставить SET IDENTITY_INSERT MobileApplication1 ON в начало страницы, иначе вы получите сообщение об ошибке. Это для SQL Server

SET IDENTITY_INSERT MOB.MobileApplication1 ON
INSERT INTO [SERVER1].DB.MOB.MobileApplication1 m
      (m.MobileApplicationDetailId,
       m.MobilePlatformId)
SELECT ma.MobileApplicationId,
       ma.MobilePlatformId 
FROM [SERVER2].DB.MOB.MobileApplication2 ma

Ответ 8

Мне нравится этот вариант.

INSERT INTO 'DB_NAME' 
(SELECT * from '[email protected]_LINK')
MINUS 
(SELECT * FROM 'DB_NAME');

Какое средство будет вставлять все, что не включено в DB_NAME, но включено в [email protected]_LINK. Надеюсь на эту помощь.

Ответ 9

Попробуйте это

INSERT INTO dbo.DB1.TempTable
    (COLUMNS)
    SELECT COLUMNS_IN_SAME_ORDER FROM dbo.DB2.TempTable

Это произойдет только в том случае, если элемент в dbo.DB2.TempTable уже находится в dbo.DB1.TempTable.

Ответ 10

Это работает успешно.

INSERT INTO DestinationDB.dbo.DestinationTable (col1,col1)
 SELECT Src-col1,Src-col2 FROM SourceDB.dbo.SourceTable