Вставка данных из одной таблицы в другую таблицу, но в другую базу данных

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

Я получаю сообщение об ошибке «В базе данных уже есть объект с именем PayComponents».

Не уверен в другом способе добиться того, что я хочу

SELECT * INTO [PSD2394].DBO.PayComponents
FROM [PSD1346].DBO.PayComponents
WHERE PCompID != 1 AND PCompID != 2

Ожидаемый результат — все записи из БД — PSD1346, за исключением случаев, когда PCompID = 1 и 2 вставлены в таблицу PayComponents в БД — PSD2394

Не используйте синтаксис SELECT ...INTO use INSERT INTO...SELECT ...FROM. SELECT...INTO синтаксис попытается создать объект, и если он уже существует, произойдет ошибка (как здесь). INSERT INTO... синтаксис вставляет данные в существующий объект,

Larnu 09.04.2019 12:47

@Отметка . . . Удалите таблицу перед ее повторным созданием.

Gordon Linoff 09.04.2019 12:47

@GordonLinoff .. Извините, не думаю, что это мудрый шаг. эта таблица уже существует с данными в ней, если бы я удалил таблицу, это могло бы иметь негативные последствия. Я просто пытаюсь вставить данные в эту таблицу. нет ли другого пути?

Mark 09.04.2019 12:52

@Larnu теперь я получаю эту ошибку ... Явное значение для столбца идентификаторов в таблице «PSD2394.DBO.PayComponents» может быть указано только тогда, когда используется список столбцов и IDENTITY_INSERT включен.

Mark 09.04.2019 12:53

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

GuidoG 09.04.2019 12:54

@GuidoG Хорошо, попробуем. Спасибо за ответ. Я дам Вам знать.

Mark 09.04.2019 12:57
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
6
474
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

SELECT INTO будет создавать новую таблицу каждый раз, если это то, что вы хотите, вам нужно сначала удалить эту таблицу.

Чтобы добавить в существующую таблицу, вам нужно использовать для этого INSERT INTO SELECT, как в этом примере.

INSERT * INTO [PSD2394].DBO.PayComponents (column names...)
SELECT pc.column names...
FROM   [PSD1346].DBO.PayComponents pc
WHERE  pc.PCompID != 1 
AND    pc.PCompID != 2

Если первичный ключ [PSD2394].DBO.PayComponents является полем идентификации, вы не можете скопировать его, потому что база данных не позволит вам записать собственное значение в поле идентификации.
Если вам это действительно нужно, попробуйте это

SET IDENTITY_INSERT [PSD2394].DBO.PayComponents ON

do the insert statement here...

SET IDENTITY_INSERT [PSD2394].DBO.PayComponents OFF

Большое спасибо. SET IDENTITY_INSERT сработал. Это сэкономило так много ручного ввода данных. Еще раз большое спасибо.

Mark 09.04.2019 13:21

Другие вопросы по теме