AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 333426
Accepted
J. Mini
J. Mini
Asked: 2023-11-24 03:00:17 +0800 CST2023-11-24 03:00:17 +0800 CST 2023-11-24 03:00:17 +0800 CST

Quais são as abordagens idiomáticas para copiar uma tabela (e todos os seus dados) de um servidor para outro?

  • 772

Eu tenho uma tabela enorme, digamos 500.000 linhas. Quero copiá-lo (esquema e dados) de um servidor para outro. Este não é um upsert ou qualquer tipo de atualização; É uma cópia e colagem direta e única. Quais são as abordagens idiomáticas para isso?

Eu tentei:

  • Restaurar um backup de um servidor para outro. Isso é impraticável porque o SQL Server notoriamente não pode restaurar tabelas de um backup; Ele só pode restaurar bancos de dados. E meu banco de dados é enorme!
  • Usando SSMS para criar scripts dos dados da tabela como uma sequência de instruções INSERT. Isto é impraticável, pois as inserções devem ser feitas linha por linha agonizante. Eu suspeito que isso também faz coisas horríveis no log de transações, mas ninguém me atacou por isso ainda (estou executando esse script agora, vai levar horas).
sql-server
  • 5 5 respostas
  • 1107 Views

5 respostas

  • Voted
  1. Best Answer
    Brondahl
    2023-11-25T07:31:27+08:002023-11-25T07:31:27+08:00
    • Crie um novo banco de dados no mesmo servidor.
    • Use SELECT INTOpara clonar a tabela nesse banco de dados.
    • Faça backup desse banco de dados agora pequeno.
    • Agora você tem um backup contendo os dados que deseja e nada mais, portanto não pode ser muito grande. Se for, então o seu problema são os dados, não os meios de movê-los.
    • Copie o backup para o novo servidor.
    • Restaure o backup como um novo banco de dados temporário no novo servidor.
    • Copie os dados do banco de dados temporário no novo servidor para o banco de dados permanente no novo servidor.
    • 10
  2. Aleksey Vitsko
    2023-11-24T20:10:31+08:002023-11-24T20:10:31+08:00

    O que tenho usado muito é o Native SQL Server Import and Export Wizard.

    No Object Explorer do SSMS -> Fonte SQL Server -> Clique com o botão direito em banco de dados -> Tarefas -> Exportar Dados

    Escolha uma fonte de dados: Microsoft OLE DB Provider para SQL Server.
    Nome do servidor: servidor de origem.

    Escolha um destino: Provedor Microsoft OLE DB para SQL Server.
    Nome do servidor: servidor de destino.

    Especifique a cópia ou consulta da tabela: copie dados de uma ou mais tabelas ou visualizações.

    Observe que isso copiará a tabela como um Heap (colunas e dados estão lá, mas nenhum índice), você precisará criar scripts e criar índices, restrições etc. na tabela de destino manualmente (o que não é difícil se não houver muitos deles) .

    • 9
  3. Bob Klimes
    2023-11-24T03:17:03+08:002023-11-24T03:17:03+08:00

    Uma opção é usar copy-dbadbtabledata do módulo https://docs.dbatools.io/powershell .

    copy-dbadbTableData -SqlInstance sourceserver -Database sourcedatabase -Table dbo.sometablename -Destination destinationserver -DestinationDatabase destinationdatabase -DestinationTable dbo.sometablename 
    

    você também pode adicionar parâmetros se a tabela ainda não existir no destino (-AutoCreateTable) ou se existir e contiver dados (-truncate).

    Outra opção seria usar o BCP .

    bcp sourcedatabase.dbo.sometablename out D:\BCP\table.bcp -c -U<login_id> -Ssourceserver
    
    
    bcp destinationdatabase.dbo.sometablename IN D:\BCP\table.bcp -c -T
    
    • 7
  4. J.D.
    2023-11-24T06:59:38+08:002023-11-24T06:59:38+08:00

    Outra opção é uma ferramenta como o SQL Examiner Suite . Não é gratuito, mas tem sido uma ferramenta muito útil para mim ao longo do tempo:

    SQL Examiner Suite 2022 inclui dois produtos premiados em um pacote conveniente. O SQL Examiner compara e sincroniza esquemas de banco de dados, enquanto o SQL Data Examiner executa a mesma tarefa para dados reais armazenados em bancos de dados.

    SQL Examiner Suite é uma solução abrangente que realiza comparação e sincronização totalmente automatizada de quaisquer dois bancos de dados, completando suas estruturas e dados. Bancos de dados em vários formatos são suportados, incluindo todas as versões e edições do MS SQL Server da versão 7.0 a 2019, PostgreSQL, banco de dados SQL Azure, bem como a maioria das estruturas e objetos básicos de bancos de dados Oracle e MySQL. O SQL Examiner suporta totalmente todos os tipos de objetos de banco de dados encontrados em bancos de dados MS SQL e sincroniza corretamente entre diferentes versões do MS SQL.

    É muito útil para destacar as diferenças e sincronizar as alterações automaticamente. Ele pode ser agendado e executado através da linha de comando, podendo também gerar scripts de sincronização para uso posterior.

    Observação: não sou afiliado a este software de forma alguma, exceto como um usuário satisfeito.


    O texto acima é útil para sincronizações únicas, mas se você precisar de dados automatizados contínuos e sincronizações de esquema, há outros recursos nativos do SQL Server que posso mencionar.

    • 3
  5. umbio
    2023-11-25T15:19:59+08:002023-11-25T15:19:59+08:00

    SQLServer Integration Services (SSIS) também é uma forma eficiente que uso para mover dados de e para servidores. Ele tem os seguintes benefícios adicionais: Agendamento rápido Implantação independente de bancos de dados de origem/destino Aproveitar réplicas legíveis, se disponíveis Tratamento de erros Painel de monitoramento Pronto para fluxo de dados/pipeline complexos

    Cumprimentos

    • 2

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve