segunda-feira, 27 de setembro de 2010

Como duplicar uma tabela no SQL Server

Para duplicar a estrutura e os dados de uma tabela no SQL Server, basta utilizar o operador INTO em um Select, por exemplo:

SELECT * INTO NOTASCOPIA
   FROM NOTAS

Será criada uma tabela NOTASCOPIA com os dados da tabela NOTAS e com os mesmos campos e definições.

quinta-feira, 23 de setembro de 2010

E-book Gratuito do SQL Server 2008 R2

No link a seguir tem como fazer o download de um e-book gratuito sobre o SQL Server 2008 R2, escrito por Ross Mistry e Stacia Misner.

Este livro mostra as principais novidades desta versão do SQL Server.

https://profile.microsoft.com/RegSysProfileCenter/wizard.aspx?wizid=bd9adb0f-cca3-4096-96f1-f834754d1b0b&lcid=1033

quinta-feira, 9 de setembro de 2010

Como carregar um arquivo texto para uma tabela no SQL Server

Umas das formas de carregar um arquivo texto para uma tabela no SQL Server é o utilitário bcp.
Para facilitar o entendimento, vou criar um exemplo de um arquivo com três campos delimitados por “;” que devem ser carregados em uma tabela que utilizará somente dois destes campos.

Definição da Tabela:

CREATE TABLE CONTAS
      (REDUZIDA VARCHAR(6),
       COMPLETA VARCHAR(12));

Arquivo exemplo:

000001;Conta Teste;100020003000
000002;Conta Despesas;200020003000
000003;Conta Salários;300020003000

Para fazer a importação vou gerar um arquivo onde é especificado o formato que o arquivo texto possui e onde cada campo deve ser importado. Para facilitar utilizaremos o bcp para gerar o arquivo a partir da tabela que irá receber os campos com a seguinte instrução:

bcp database.dbo.CONTAS format nul -T –n Contas.fmt –S Servidor\Instância –U usuário –P Senha

Altere “database.dbo” pelo banco de dados e o schema onde a tabela está definida.

Este comando irá gerar um arquivo com o seguinte conteúdo:

10.0
2
1 SQLCHAR 2 6 "" 1 REDUZIDA Latin1_General_CI_AS
2 SQLCHAR 2 35 "" 2 COMPLETA Latin1_General_CI_AS

Sendo a primeira linha a versão do banco de dados.
A segunda linha indica a quantidade de campos do arquivo.
A terceira e a quarta são as definições dos campos da tabela.
Neste exemplo vamos desprezar a descrição da conta para isto será inserido uma definicação de campo antes do campo “COMPLETA”, o arquivo ficará com o seguinte conteúdo:

10.0
3
1 SQLCHAR 0 6 ";" 1 REDUZIDA Latin1_General_CI_AS
2 SQLCHAR 0 35 ";" 0 DESPREZAR Latin1_General_CI_AS
3 SQLCHAR 0 35 "\r\n" 2 COMPLETA Latin1_General_CI_AS

Alterações realizadas:
  • Alterada a segunda linha para indicar que o arquivo tem três campos.
  • Incluída a definição do segundo campo e indicado que a posição dele na tabela é zero, ou seja não será importado.
  • Alterada a definição do campo COMPLETA para indicar que é o terceiro campo do arquivo, mantendo que ele está na segunda posição da tabela (sexta coluna do arquivo).
  • Incluído o delimitador de campos “;”, que no último campo é o final de linha do arquivo.


Figura 1
  
 Na figura 1 tem uma explicação do formato do arquivo retirado do manual do SQL Server.






Agora que temos o formato definido, abaixo está o comando que realiza a importação:

bcp database.dbo.CONTAS in arquivo.txt -f contas.fmt –U usuário –P senha –S servidor\instância

Este utilitário também serve para exportar os dados em arquivo texto.

Existem diversas outras opções tais como: pegar somente um pedaço do arquivo, outras formas de autenticação e utilizar arquivos de formato no padrão XML.