У меня есть база данных под названием foo и база данных под названием bar. У меня есть таблица в foo под названием tblFoobar, которую я хочу переместить (данные и все) на панель базы данных из базы данных foo. Какая инструкция SQL для этого предназначена?
Копирование таблиц из одной базы данных в другую в SQL Server
Ответы (7)
На SQL Server? а на одном сервере базы данных? Используйте трехчастное именование.
INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar
Это просто перемещает данные. Если вы хотите переместить определение таблицы (и другие атрибуты, такие как разрешения и индексы), вам придется сделать что-то еще.
SELECT
. Слово мудрым, не делайте моей ошибки! Оставьте круглые скобки для этой второй группы! :)
- person vapcguy; 19.07.2016
Задача «Импорт данных» в SQL Server Management Studio (щелкните правой кнопкой мыши имя БД, затем задачи) большую часть этого сделает за вас. Запустите его из базы данных, в которую вы хотите скопировать данные.
Если таблицы не существуют, он создаст их для вас, но вам, вероятно, придется воссоздавать какие-либо индексы и тому подобное. Если таблицы действительно существуют, он будет добавлять новые данные по умолчанию, но вы можете настроить это (отредактировать сопоставления), чтобы удалить все существующие данные.
Я использую это все время, и он работает довольно хорошо.
WHERE
с помощью задачи «Импорт данных»? Я не мог найти способ сделать это.
- person crush; 27.01.2014
identity
и foreign key
удаляются из целевой базы данных. Какое решение?
- person Shaiju T; 16.11.2015
Это должно работать:
SELECT *
INTO DestinationDB..MyDestinationTable
FROM SourceDB..MySourceTable
Он не копирует ограничения, значения по умолчанию или индексы. Созданная таблица не будет иметь кластеризованный индекс.
В качестве альтернативы вы можете:
INSERT INTO DestinationDB..MyDestinationTable
SELECT * FROM SourceDB..MySourceTable
Если ваша целевая таблица существует и пуста.
INSERT INTO...
) у меня работала в Oracle.
- person vapcguy; 19.07.2016
Если это только одна таблица, все, что вам нужно сделать, это
- Определение таблицы скриптов
- Создать новую таблицу в другой базе данных
- Обновите правила, индексы, разрешения и т. Д.
- Импортировать данные (несколько вставок в примеры уже показаны выше)
Одна вещь, которую вы должны принять во внимание, - это другие обновления, такие как перенос других объектов в будущем. Обратите внимание, что исходная и конечная таблицы имеют разные имена. Это означает, что вам также придется вносить изменения в зависимые объекты, такие как представления, хранимые процедуры и другие.
К одному или нескольким объектам можно перейти вручную без каких-либо проблем. Однако, когда обновлений больше, чем несколько, сторонние инструменты сравнения очень кстати. Прямо сейчас я использую ApexSQL Diff для миграции схемы, но вы не ошибетесь с другими инструмент там.
Напишите сценарий
create table
в студии управления, запустите этот сценарий в панели, чтобы создать таблицу. (Щелкните правой кнопкой мыши таблицу в проводнике объектов, таблицу сценариев как, создать в ...)INSERT bar.[schema].table SELECT * FROM foo.[schema].table
SET IDENTITY_INSERT TblName ON
.
- person JeremyWeir; 06.06.2012
Вы также можете использовать Мастер создания сценариев SQL Server, который поможет создать сценарии SQL, которые могут выполнять следующие действия:
- скопировать схему таблицы
- любые ограничения (идентичность, значения по умолчанию и т. д.)
- данные в таблице
- и многие другие варианты при необходимости
Хороший пример рабочего процесса для SQL Server 2008 со снимками экрана, показанными здесь.
Вы можете пойти по этому пути: (общий пример)
insert into QualityAssuranceDB.dbo.Customers (columnA, ColumnB)
Select columnA, columnB from DeveloperDB.dbo.Customers
Также, если вам нужно сгенерировать имена столбцов, чтобы вставить предложение вставки, используйте:
select (name + ',') as TableColumns from sys.columns
where object_id = object_id('YourTableName')
Скопируйте результат и вставьте в окно запроса, чтобы представить имена столбцов таблицы, и даже это также исключит столбец идентификаторов:
select (name + ',') as TableColumns from sys.columns
where object_id = object_id('YourTableName') and is_identity = 0
Помните, что сценарий копирования строк будет работать, если базы данных находятся в одном месте.
Вы можете попробовать это.
select * into <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>
Имя сервера указывать необязательно, если обе БД находятся на одном сервере.