none
Gerar Script para inserir dados no SQL Server que estão em tabela XLS

    Question

  • Olá,

    Tenho uma seguinte planilha xls, ex.:

    id clinte Endereço
    1  ABC    R.
    2  DEF    AV.
    3  GHI  Estr.

    Preciso desses registros e importar para um tabela no SQL Server 2005.

    Para isso, tenho que gerar um script de Insert, para que o meu pessoal do Suporte, acesse a máquina do cliente e execute o script.


    Qual é a melhor forma de realizar esse procedimento?

    Obrigado!
    Thursday, November 04, 2010 6:09 PM

Answers

  • Boa Noite,

    Acredito que muitas vezes as melhores soluções são as mais simples e acredito que podemos chegar numa solução sem envolver outros componentes de aplicação ou o Wizard do SSIS. Considerando que a primeira coluna é a coluna A, a segunda a B e a terceira a C e que o cabeçalho está na primeira linha eu faria o seguinte:

    - Na célula D1 escreva a seguinte fórmula ="CREATE TABLE Clientes (ID INT, Cliente VARCHAR(50), Endereco VARCHAR(120))"
    - Na célula D2 escreva a seguinte fórmula ="INSERT INTO Clientes (ID, Cliente, Endereco) VALUES (" & A2 & ",'" & B2 & "','" & C2 & "')"
    - Arraste a fórmula D2 até a última linha que possua registros
    - Copie o resultado da coluna D em um arquivo texto
    - Submeta o arquivo texto ao pessoal do suporte

    Acredito que isso atenda pontualmente sua demanda, mas acredito que isso tenha de evoluir para um processo (de preferência automatizado) caso haja uma grande recorrência

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com


    Classifique as respostas. O seu feedback é imprescindível
    Thursday, November 04, 2010 11:02 PM
    Moderator

All replies

  • O seu SQLServer é 64 ou 32?
    Tks. Fausto Fiorese Branco MCTS, MCITP/DBA 2005 | MCITP/DBA 2008 São Paulo - Brasil * http://www.linkedin.com/in/faustobranco
    Thursday, November 04, 2010 6:12 PM
  • Leandro,

    Faça via Import no SQL. Clicando com o botão direito em cima da base / Tasks / Import...

    Na primeira tela informe o banco que irá receber os dados. Na segunda tela informe o caminho da planilha.

     

    Com isso o SQL irá criar uma tabela com a mesma estrutura. Daí vc poderá manipular da forma que quiser dentro do banco.

    Att.,


    Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com Se o post foi útil, não esqueça de marcá-lo.
    Thursday, November 04, 2010 6:13 PM
  • Marco,

     

    Meus clientes utilizam a versão express 2005 32 bits, portanto o meu Suporte não terá como proceder dessa forma.

    Acredito que a melhor forma, seria criar uma conexão com esse planilha, carregar esse dados em algum lugar e então manipular os dados.

     

    Att.,

     

    Leandro

    Thursday, November 04, 2010 6:25 PM
  • Leandro, acho que no seu caso a melhor forma é fazer uma camada de aplicação para fazer a importação dessa planilha. Para fazer isso via script é razoavelmente complicado a partir de maquinas de clientes, um script de importação executado por exemplo por pelo SSMS "enxerga" somente as "pastas" e "discos" do servidor, para fazer a importação, você precisaria abir uma conexão de rede do servidor para cada máquina de cliente, ou ao contrario, de cada maquina de cliente copiar a planilha para o servidor e fazer a importação.

    Nesse caso, uma camada feita somente para isso, em .Net por exemplo, ficaria muito mais simples e reaproveitavel.

    Abrir conexões ODBC, DSN, etc direto na planilha para o banco eu IMHO considero uma certa falha de segurança.


    Tks. Fausto Fiorese Branco MCTS, MCITP/DBA 2005 | MCITP/DBA 2008 São Paulo - Brasil * http://www.linkedin.com/in/faustobranco
    Thursday, November 04, 2010 6:48 PM
  • Boa Noite,

    Acredito que muitas vezes as melhores soluções são as mais simples e acredito que podemos chegar numa solução sem envolver outros componentes de aplicação ou o Wizard do SSIS. Considerando que a primeira coluna é a coluna A, a segunda a B e a terceira a C e que o cabeçalho está na primeira linha eu faria o seguinte:

    - Na célula D1 escreva a seguinte fórmula ="CREATE TABLE Clientes (ID INT, Cliente VARCHAR(50), Endereco VARCHAR(120))"
    - Na célula D2 escreva a seguinte fórmula ="INSERT INTO Clientes (ID, Cliente, Endereco) VALUES (" & A2 & ",'" & B2 & "','" & C2 & "')"
    - Arraste a fórmula D2 até a última linha que possua registros
    - Copie o resultado da coluna D em um arquivo texto
    - Submeta o arquivo texto ao pessoal do suporte

    Acredito que isso atenda pontualmente sua demanda, mas acredito que isso tenha de evoluir para um processo (de preferência automatizado) caso haja uma grande recorrência

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com


    Classifique as respostas. O seu feedback é imprescindível
    Thursday, November 04, 2010 11:02 PM
    Moderator
  • Gustavo,

     

    Obrigado pela a dica!!

     

    Att.,

    Leandro

    Monday, November 08, 2010 5:13 PM