Copiar as tabelas de uma base de dados para outra no servidor SQL
9 answers
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.
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.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.
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)
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.
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...)
INSERT bar.[schema].table SELECT * FROM foo.[schema].table
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 .
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.
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
Copiar Os Dados
INSERT INTO Alfestonline..url_details(url,[status],recycle)
SELECT url,status,recycle FROM AlfestonlineOld..url_details