Estamos escrevendo um novo aplicativo e, durante o teste, precisaremos de um monte de dados fictícios. Adicionei esses dados usando o MS Access para despejar arquivos do Excel nas tabelas relevantes.
De vez em quando, queremos "atualizar" as tabelas relevantes, o que significa eliminar todas, recriá-las e executar uma consulta anexada salva do MS Access.
A primeira parte (remoção e recriação) é um script sql fácil, mas a última parte me faz estremecer. Eu quero um único script de instalação que tenha um monte de INSERTs para regenerar os dados fictícios.
Eu tenho os dados nas tabelas agora. Qual é a melhor maneira de gerar automaticamente uma grande lista de instruções INSERT desse conjunto de dados?
A única maneira de pensar em fazer isso é salvar a tabela em uma planilha do Excel e, em seguida, escrever uma fórmula do Excel para criar um INSERT para cada linha, o que certamente não é o melhor caminho.
Estou usando o 2008 Management Studio para conectar-se a um banco de dados do SQL Server 2005.
fonte
Respostas:
A Microsoft deve anunciar essa funcionalidade do SSMS 2008. O recurso que você procura está incorporado no Gerar Script utilitário , mas a funcionalidade está desativada por padrão e deve ser ativada ao criar scripts em uma tabela.
Esta é uma rápida execução para gerar as
INSERT
instruções para todos os dados em sua tabela, sem scripts ou suplementos ao SQL Management Studio 2008:Você receberá a
CREATE TABLE
instrução e todas asINSERT
instruções dos dados diretamente do SSMS.fonte
Data only
e encontrar umCyclic dependencies found
erro, mude paraSchema and data
para evitar o erro. Acontece no Management Studio v17.Usamos esse procedimento armazenado - ele permite direcionar tabelas específicas e usar cláusulas where. Você pode encontrar o texto aqui .
Por exemplo, permite fazer isso:
Código fonte copiado do link:
fonte
Conforme mencionado por Mike Ritacco, mas atualizado para o SSMS 2008 R2
Você receberá todas as instruções INSERT dos dados diretamente do SSMS.
EDIT 2016-10-25 SQL Server 2016 / SSMS 13.0.15900.1
Clique com o botão direito do mouse no nome do banco de dados
Escolha Tarefas> Gerar scripts
Dependendo das configurações, a página de introdução pode mostrar ou não
Escolha 'Selecionar objetos específicos do banco de dados',
Expanda a visualização em árvore e verifique as tabelas relevantes
Clique em Next
Clique em Avançado
Na seção Geral, escolha a opção apropriada para 'Tipos de dados para script'
Clique OK
Escolha se deseja que a saída vá para uma nova consulta, a área de transferência ou um arquivo
Clique em Avançar duas vezes
Seu script é preparado de acordo com as configurações escolhidas acima
Clique em Concluir
fonte
Isso pode ser feito usando
Visual Studio
também (pelo menos na versão 2013 em diante).No VS 2013, também é possível filtrar a lista de linhas nas quais a instrução inserções se baseia, isso é algo que não é possível no SSMS, como eu sei.
Execute as seguintes etapas:
Isso criará as instruções de inserção (condicionais) da tabela selecionada na janela ou no arquivo ativo.
Os botões "Filtro" e "Script" do Visual Studio 2013 :
fonte
Você pode usar o SSMS Tools Pack (disponível para SQL Server 2005 e 2008). Ele vem com um recurso para gerar instruções de inserção.
http://www.ssmstoolspack.com/
fonte
Estou usando o SSMS 2008 versão 10.0.5500.0. Nesta versão, como parte do assistente para gerar scripts, em vez de um botão Avançado, há a tela abaixo. Nesse caso, eu queria apenas os dados inseridos e não criar instruções, então tive que alterar as duas propriedades circuladas
fonte
Procedimento armazenado de Jane Dallaway: http://docs.google.com/leaf?id=0B_AkC4ZdTI9tNWVmZWU3NzAtMWY1My00NjgwLWI3ZjQtMTY1NDMxYzBhYzgx&hl=pt_BR . A documentação é uma série de postagens do blog: https://www.google.com/search?q=spu_generateinsert&as_sitesearch=http%3A%2F%2Fjane.dallaway.com
fonte
Se você precisar de um acesso programático, poderá usar um procedimento armazenado de código aberto `GenerateInsert.
Gerador de instruções INSERT
Apenas como um exemplo simples e rápido, para gerar instruções INSERT para uma tabela,
AdventureWorks.Person.AddressType
execute as seguintes instruções:Isso irá gerar o seguinte script:
fonte
O primeiro link para sp_generate_inserts é bem legal, aqui está uma versão muito simples:
No meu sistema, recebo este resultado:
fonte
Minha contribuição para o problema, um gerador de script Powershell INSERT que permite criar scripts em várias tabelas sem precisar usar a GUI do SSMS. Ótimo para dados de "semente" que persistem rapidamente no controle de origem.
Por padrão, o script INSERT gerado será "SeedData.sql" na mesma pasta que o script.
Você precisará dos assemblies dos Objetos de Gerenciamento do SQL Server instalados, que deverão estar lá se você tiver o SSMS instalado.
fonte
Não use inserções, use BCP
fonte
Talvez você possa tentar o Assistente para Publicação do SQL Server http://www.microsoft.com/downloads/details.aspx?FamilyId=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=pt
Possui um assistente que ajuda você a inserir instruções por script.
fonte
GenerateData é uma ferramenta incrível para isso. Também é muito fácil fazer ajustes, porque o código fonte está disponível para você. Alguns recursos interessantes:
fonte
Eu usei esse script que eu coloquei no meu blog ( Como gerar procedimentos de instrução Insert no sql server ).
Até agora funcionou para mim, embora possam ser bugs que ainda não descobri.
fonte
Eu uso o sqlite para fazer isso. Acho muito, muito útil para criar bancos de dados de rascunho / teste.
sqlite3 foo.sqlite .dump > foo_as_a_bunch_of_inserts.sql
fonte
Você já tem dados em um banco de dados de produção? Nesse caso, você pode configurar uma atualização de período dos dados via DTS. Fazemos o nosso semanalmente nos fins de semana e é muito bom ter dados limpos e reais toda semana para nossos testes.
Se você ainda não possui produção, deve criar um banco de dados que eles desejem (fresco). Em seguida, duplique esse banco de dados e use esse banco de dados recém-criado como seu ambiente de teste. Quando quiser a versão limpa, basta duplicar a versão limpa novamente e Bob é seu tio .
fonte
Se você preferir usar o Planilhas Google, use o SeekWell para enviar a tabela para uma planilha e insira linhas em uma programação, à medida que são adicionadas à planilha.
Veja aqui o processo passo a passo ou assista a uma demonstração em vídeo do recurso aqui.
fonte
Existem muitos scripts bons acima para gerar instruções de inserção, mas tentei um dos meus para torná-lo o mais amigável possível e também para poder fazer instruções UPDATE. + empacote o resultado pronto para arquivos .sql que podem ser armazenados por data.
Ele recebe como entrada sua instrução SELECT normal com a cláusula WHERE e gera uma lista de instruções Insert e update. Juntos, eles formam uma espécie de IF NOT EXISTS () INSERT ELSE UPDATE Também é útil quando existem colunas não atualizáveis que precisam ser excluídas da instrução INSERT / UPDATE final.
Outra coisa que o script abaixo pode fazer é: ele pode até lidar com INNER JOINs com outras tabelas como instrução de entrada para o processo armazenado. Pode ser útil como uma ferramenta de gerenciamento de Liberação para pessoas pobres, que fica na ponta dos dedos, onde você digita as instruções SELECT sql o dia inteiro.
postagem original: Gere instrução UPDATE no SQL Server para tabela específica
fonte
por que não fazer backup dos dados antes de trabalhar com eles e restaurar quando quiser que eles sejam atualizados?
se você deve gerar inserções, tente: http://vyaskn.tripod.com/code.htm#inserts
fonte
Não tenho certeza, se entendi sua pergunta corretamente.
Se você possui dados no MS-Access, que deseja movê-los para o SQL Server - você pode usar o DTS.
E, eu acho que você poderia usar o SQL Profiler para ver todas as instruções INSERT, suponho.
fonte
Também pesquisei bastante sobre isso, mas não consegui encontrar a solução concreta para isso. Atualmente, a abordagem a seguir é copiar o conteúdo do Excel do SQL Server Managment studio e importar os dados para o Oracle-TOAD e gerar as instruções de inserção
fonte
Você pode gerar instruções INSERT ou MERGE com este aplicativo simples e gratuito que escrevi há alguns anos:
Data Script Writer (Desktop Application for Windows)
Além disso, escrevi um post sobre essas ferramentas recentemente e aborda como alavancar o SSDT para um banco de dados de implantação com dados. Saiba mais:
Script e implante os dados para o banco de dados do projeto SSDT
fonte
Eu fiz um utilitário simples de usar, espero que gostem.
Se as instruções INSERT gerados estão sendo truncado, verificar o comprimento do texto limite dos resultados sobre as opções Management Studio:
Tools > Options
,Query Results > SQL Server > Results to Grid
"Os dados não XML" valor em "Máximo caracteres Retirado".fonte