Pergunta

Eu tenho um banco de dados chamado Foo e um banco de dados chamado bar. Eu tenho uma tabela no Foo chamada Tblfoobar que eu quero mover (dados e tudo) para a barra de banco de dados do banco de dados Foo. Qual é a declaração SQL para fazer isso?

Foi útil?

Solução

No servidor SQL? e no mesmo servidor de banco de dados? Use três partes de nomeação.

INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar

Isso apenas move os dados. Se você deseja mover a definição da tabela (e outros atributos, como permissões e índices), você terá que fazer outra coisa.

Outras dicas

A tarefa "Importar Dados" do SQL Server Management Studio (clique com o botão direito do mouse no nome do banco de dados e as tarefas) fará a maior parte disso para você. Execute -o no banco de dados no qual deseja copiar os dados.

Se as tabelas não existirem, elas as criarão para você, mas você provavelmente terá que recriar qualquer índice e tal. Se as tabelas existirem, ela anexará os novos dados por padrão, mas você poderá ajustar isso (editar mapeamentos) para excluir todos os dados existentes.

Eu uso isso o tempo todo e funciona bastante bem.

Isso deve funcionar:

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

Será não Copiar as constações, padrões ou índices. A tabela criada será não tem um índice em cluster.

Alternativamente, você poderia:

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

Se a sua tabela de destino existir e estiver vazia.

Se for uma tabela apenas, tudo o que você precisa fazer é

  • Definição da tabela de scripts
  • Crie uma nova tabela em outro banco de dados
  • Atualizar regras, índices, permissões e tal
  • Importar dados (vários insertos em exemplos já são mostrados acima)

Uma coisa que você terá que considerar são outras atualizações, como migrar outros objetos no futuro. Observe que suas tabelas de origem e destino não têm o mesmo nome. Isso significa que você também precisará fazer alterações se objetos dependentes, como visualizações, procedimentos armazenados e outros.

Whit um ou vários objetos, você pode ir manualmente sem problemas. No entanto, quando há mais do que apenas algumas atualizações, as ferramentas de comparação de terceiros são muito úteis. Agora estou usando ApexSQL diff Para migrações de esquema, mas você não pode errar com nenhuma outra ferramenta por aí.

  1. Script o create table No Management Studio, execute esse script na barra para criar a tabela. (Clique com o botão direito do mouse na tabela no objeto explorador, tabela de scripts como, crie para ...)

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

Você também pode usar o Gere SQL Server Scripts Wizard Para ajudar a orientar a criação do script SQL que pode fazer o seguinte:

  • Copie o esquema da tabela
  • quaisquer restrições (identidade, valores padrão, etc)
  • dados dentro da tabela
  • E muitas outras opções, se necessário

Bom exemplo de fluxo de trabalho para SQL Server 2008 com capturas de tela mostradas aqui.

Você pode ir com o seguinte: (um exemplo geral)

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

Além disso, se você precisar gerar também os nomes das colunas para colocar a cláusula Insert, use:

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

Copie o resultado e cole na janela de consulta para representar os nomes das colunas da tabela e até isso excluirá a coluna de identidade também:

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

Lembre -se de que o script para copiar linhas funcionará se os bancos de dados pertencem ao mesmo local.


Você pode tentar isso.

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

O nome do servidor é opcional se os dois db estiverem no mesmo servidor.

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

inserir em destino_existing_tbl Selecione col1, col2 de fonte_tbl

Copiar dados

INSERT INTO Alfestonline..url_details(url,[status],recycle) 
SELECT url,status,recycle FROM AlfestonlineOld..url_details
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top