Copiar as tabelas de uma base de dados para outra no servidor SQL

Tenho uma base de dados chamada foo e uma base de dados chamada bar. Eu tenho uma tabela em foo chamada tblFoobar que eu quero mover (dados e tudo) para a barra de banco de dados de foo de banco de dados. Qual é a declaração SQL para fazer isso?

Author: Christopher Rapcewicz, 2008-10-09

9 answers

No servidor SQL? e no mesmo servidor de base de dados? Usa o nome de três partes.
INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar
Isto só move os dados. Se você quiser mover a definição da tabela (e outros atributos como permissões e índices), você terá que fazer algo mais.
 197
Author: Amy B, 2011-08-10 02:51:50

A tarefa "importar dados" do SQL Server Management Studio (carregue com o botão direito no nome do DB, depois as tarefas) farão a maior parte disto por si. Execute-o a partir da base de dados em que você deseja copiar os dados.

Se as tabelas não existirem, criá-las-á para si, mas provavelmente terá de recriar quaisquer índices e tal. Se as tabelas existirem, ele irá adicionar os novos dados por padrão, mas você pode ajustar isso (editar mapeamentos) para que ele irá excluir todos os dados existentes.

Estou sempre a usar isto. funciona bastante bem.
 527
Author: David, 2013-12-26 07:04:52
Isto deve funcionar.
SELECT * 
INTO DestinationDB..MyDestinationTable 
FROM SourceDB..MySourceTable 

Ele irá não copiar as cores, valores por omissão ou índices. A tabela criada irá não ter um índice agrupado.

Em alternativa, pode:

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

Se a sua tabela de destino existir e estiver vazia.

 95
Author: leoinfo, 2011-08-10 02:50:55

Se é só uma mesa, então tudo o que precisas de fazer é

  • Definição da tabela "Script"
  • Criar uma nova tabela noutra base de dados
  • Actualizar as regras, índices, permissões e assim
  • Dados De Importação (vários exemplos já são mostrados acima)
Uma coisa que você terá que considerar é outras atualizações, como migrar outros objetos no futuro. Note que suas tabelas de origem e destino não têm o mesmo nome. Isso significa que você também tem de fazer alterações se depender de objectos como vistas, procedimentos armazenados e outros.

Com um ou vários objectos pode ir manualmente com qualquer problema. No entanto, quando há mais do que apenas algumas atualizações ferramentas de comparação de terceiros vêm muito úteis. Neste momento eu estou usando ApexSQL Diff para as migrações de esquemas, mas você não pode dar errado com qualquer outra ferramenta lá fora.

 46
Author: Igor Voplov, 2013-05-29 09:00:49
  1. Script the {[[0]} in management studio, run that script in bar to create the table. (Tabela do clique direito no Explorador de objetos, tabela de script as, Criar para...)

  2. INSERT bar.[schema].table SELECT * FROM foo.[schema].table

 22
Author: ScottStonehouse, 2012-05-23 09:25:05

Também pode utilizar o Gerar o Assistente de programas do servidor de SQL para ajudar a orientar a criação de scripts SQL que podem fazer o seguinte:

  • copiar o esquema da tabela
  • quaisquer restrições (identidade, valores por omissão, etc.)
  • dados no quadro
  • e muitas outras opções, se necessário

Bom exemplo de fluxo de trabalho para SQL Server 2008 com imagens de ecrã apresentadas aqui .

 16
Author: ryan, 2011-10-12 00:04:05

Pode ir por aqui: (um exemplo geral)

insert into QualityAssuranceDB.dbo.Customers (columnA, ColumnB)
Select columnA, columnB from DeveloperDB.dbo.Customers

Também se tiver de gerar os nomes das colunas para inserir uma cláusula, use:

    select (name + ',') as TableColumns from sys.columns 
where object_id = object_id('YourTableName')

Copiar o resultado e colar na janela de pesquisa para representar os nomes da sua coluna de tabela e até mesmo Isto irá excluir a coluna identidade também:

    select (name + ',') as TableColumns from sys.columns 
where object_id = object_id('YourTableName') and is_identity = 0

Lembre-se que o programa para copiar as linhas irá funcionar se as bases de dados pertencerem ao mesmo local.


Podes tentar isto.
select * into <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>

O nome do servidor é opcional se ambos os DB estiverem no mesmo servidor.

 8
Author: NeverHopeless, 2016-04-26 11:20:02

Se houver uma tabela existente e quisermos copiar apenas os dados, podemos tentar esta consulta.

Inserir no Destino_ Existing_ TBL seleccionar o col1, o col2 do Source_Tbl

 1
Author: Mohan, 2016-05-24 06:06:35

Copiar Os Dados

INSERT INTO Alfestonline..url_details(url,[status],recycle) 
SELECT url,status,recycle FROM AlfestonlineOld..url_details
 0
Author: Arun Prasad E S, 2016-01-18 09:55:04