Instalando e configurando (DB2) o Squirrel SQL no Linux

O Squirrel SQL é uma ótima opção de client SQL, pois além de possuir diversas funcionalidades sua distribuição é livre.  Segue o passo a passo para instalação e configuração do Squirrel SQL no Linux.

Instalação

1. Primeiro acesse o site http://squirrel-sql.sourceforge.net/e clique em Download and Installation.
2. Selecione a opção Install jar of SQuirreL 3.6 for Windows/Linux/others (ou superior)
3. Faça o download do instalador.
4. O instalador é um .jar, uma extensão compilada do Java. Abra uma janela de terminal, vá até o diretório do instalador e digite java -jar squirrel-sql-3.6-standard.jar

Será aberta a seguinte tela de instalação, clique em Next

5. Aqui são algumas informações. Caso queira ler fique a vontade, ou então clique em Next.

6.  Nessa tela ele irá pedir qual a pasta de instalação, no meu caso é a “/home/antonioc/squirrel-sql-3.6″, altere para uma de sua preferência ou deixe a padrão. Clique em Next.

7. Caso a pasta informada não exista, a seguinte mensagem será exibida. Clique em OK para criar a pasta.

8. Agora aparecerá a tela para selecionarmos os pacotes a serem instalados, mantenha o Base e o Standard selecionados e escolha os plugins que deseja instalar (podem ser adicionados depois da instalação também).

9. Aguarde o processo de instalação de clique em Next

10. A primeira opção cria um atalho no menu iniciar do sistema. Caso queira que seja criado um atalho na área de trabalho marque também a segunda opção. Clique em Next.

11. Seu Squirrel SQL esta instalado.

Configuração (DB2)

Iremos configurar o Squirrel SQL para conectar a uma base de dados DB2, para isso e necessário que  haja um client DB2 instalado na maquina.

1. Abra o Squirrel e selecione a opção Drivers.

2.  Localize na lista de Drivers o “IBM DB2 App Driver”,  e dê um duplo clique nele para editar suas configurações. Preencha o formulário com as informações abaixo:
Name: IBM DB2 App Driver
Exemple URL: jdbc:db2:<dbname>
Web Site URL: http://www-306.ibm.com/software/data/db2

Class Name: com.ibm.db2.jcc.DB2Driver

Extra Class Patch:
/opt/IBM/db2/V9.7/java/db2jcc.jar
/opt/IBM/db2/V9.7/java/db2jcc_license_cu.jar
/opt/IBM/db2/V9.7/java/db2jcc_license_cisuz.jar


Utilize o botão Add para adicionar as classes

Após preencher todos os dados, selecione OK. Caso queira utilize o botão Show Loaded Drivers Only para exibir apensa os drivers configurados.

Pronto, o seu Squirrel SQL já esta com o Driver DB2 configurado, agora vamos adicionar uma conexão com um banco de dados.

1. No menu a esquerda clique em Aliases e depois no sinal “+”.

2.  Na tela que abrir insira um nome para a conexão, selecione um Driver, e preencha o usuário e a senha de acesso ao banco.

3. Selecione o botão Properties para configurar algumas variáveis da conexão. Em Driver Properties, habilite a opção “Use driver properties” e depois clique com o botão direito em uma das linhas e selecione Add Property:

Irá abrir uma janela para você preencher as informações:
Property Name: retrieveMessagesFromServerOnGetMessage
Property Value: true
Selecione o botão Add:

Selecione a opção Specify para a nova linha inserida e depois clique em OK
Essa nova linha garante que o DB2 retorno uma mensagem com a descrição do erro encontrado em uma instrução SQL.

4.Selecione o botão Test para verificar se esta funcionando.

Acione o botão Connect para realizar a conexão com o banco de dados.

Será exibida uma mensagem informando que a conexão foi realizada com sucesso.

Pronto sua conexão com o banco de dados foi criada com sucesso! Para criar outras conexões DB2 você pode duplicar essa que você criou e alterar apenas as informações de conexão.

Instalando e configurando o IBM InfoSphere Data Architect

IBM InfoSphere Data Architect é uma solução de design de dados colaborativa. Ele permite descobrir, modelar, relacionar, padronizar e integrar ativos de dados distribuídos em toda a empresa. Inclui o suporte para tabelas organizadas em colunas e pode oferecer um melhor entendimento dos ativos de dados atuais, para ajudar a aumentar a eficiência e reduzir o tempo de comercialização.
A instalação do IBM InfoSphere Data Architect pode ser feita no Windows ou no Linux, porem o produto (interface) se comporta melhor no Windows, por isso minha recomendação pessoal é que seja utilizado nesse Sistema Operacional.

Instalação

1. Descompacte o arquivo INFO_DATA_ARCH_V9.1.1_FOR_WIN_ML.zip para ter acesso aos arquivos de instalação do IBM InfoSphere Data Architect 9.1.1
2. Execute o arquivo setup.exe para iniciar a instalação

3. O programa de instalação irá apresentar diversas informações sobre o produto, porem para iniciar a instalação selecione a opção “Instalação Administrativa”

4. Será aberto o IBM Installation Manager, se for sua primeira instalação de produto IBM, será necessário instalar também o IBM Installation Manager. Mantenha as opções selecionadas e clique em Next.
Exibindo noname

5. Será necessário aceitar as informações de licença do produto, clique em “I accept the terms in the license agreements” e depois em Next

6. Selecione os diretórios onde deseja armazenar as informações do IBM Installation Manager e os arquivos compartilhados:

7. Faça o mesmo para os dados do IBM InfoSphere Data Architect, selecionando também a arquitetura

8. Selecione os pacotes de linguagem desejados.

9. Selecione as funcionalidades que deseja instalar (recomendo que seja mantido o padrão).

10. Mantenha a opção de ajuda via Web ativa e clique em Next.

11. Será apresentada uma tela com os dados selecionados para que você realize uma revisão, clique no botão Install e aguarde o processo.

12. Pronto, seu produto já foi instalado com sucesso, se seguir a opção padrão o IBM InfoSphere Data Architect será executado quando você apertar o botão Finish.

Configuração para modelagem de dados

1. Ao executar o IBM Data Architect você será questionado quanto ao caminho do seu workspace, selecione o caminho de sua preferência.

2. No menu Window selecione a opção Open Perspective e altere para Modeling (por padrão ele vem como Data).

Pronto, seu ambiente já esta instalado e configurado!

Dica de leitura – Tecnologia e Projeto de Data Warehouse

Para aqueles que pretendem trabalhar na área de Business Intelligence e buscam uma leitura simples, que esteja em seu idioma nativo (português) o livro ‘Tecnologia e Projeto de Data Warehouse’ de ‘Felipe Nery R. Machado’ é uma ótima opção.

Tecnologia e projeto de Data Warehouse

 

Além de abordar os principais assuntos relacionados a BI, o livro traz alguns casos de estudo para que o leitor consiga entender como os conceitos apresentados são aplicados.

Algumas informações sobre o livro:

Autor(es): Felipe Nery Rodrigues Machado
I.S.B.N.: 978-85-365-0012-6
Edição:
Ano: 2013
N. Páginas: 320
Formato: 17 x 24 cm
Peso: 0,520 Kg

Sinopse

A tecnologia Data Warehousing (processo de fazer Data Warehouse) é considerada a evolução natural do Ambiente de Apoio à Decisão. Sua crescente utilização pelas empresas está relacionada à necessidade de dominar informações estratégicas para garantir respostas e ações rápidas, assegurando a competitividade de um mercado altamente mutável.

Com uma apresentação técnica diferenciada, embasada na experiência em processos de Data Warehousing, o professor e consultor Felipe Machado passa seu conhecimento, neste livro, com linguagem simples e objetiva, o que permite a compreensão gradativa e efetiva das técnicas. Com essa nova forma de pensar, enfatizando a importância e o formato dos processos tecnológicos inerentes a essa arquitetura, tais como ETL e gestão de metadados, o Data Warehousing transforma-se em um processo menos complicado.

Destacando aspectos conceituais e a orientação à gestão de negócios, a obra traz exemplos e estudos de caso, introduzindo as características do ambiente de Data Warehouse, seus componentes e papéis. Mostra, ainda, os processos e as ferramentas dessa tecnologia.

Apresenta as necessidades e motivações para o uso desse recurso, além do CRM (Customer Relationship Management), explicando como realizar Business Intelligence (BI) e a importância da modelagem multidimensional.

Explica a granularidade de dados e seus níveis, a modelagem de dados, entidades, relacionamentos, atributos, restrições de integridade e traz tópicos avançados em modelo E-R. Descreve o recurso OLAP (OnLine Analytical Processing) e suas operações básicas, os modelos star e snowflake, elementos básicos de fatos e medidas, o projeto físico e as dimensões.

Um estudo de caso mostra o sistema atual, as necessidades executivas, a identificação do fato e as estruturas possíveis. Outro estudo de caso consiste em um hotel e seus serviços, dimensões e o modelo final, além de um terceiro estudo de caso sobre administração de clínicas médicas.

O livro destina-se àqueles que já possuem alguma experiência em modelagem de dados, necessitam aprimorar conhecimentos e implementar um ambiente de Data Warehouse, considerando-se a versão 2008 do SQL Analisys Server e os conceitos estratégicos de BI Competence Center.

Na sexta edição, são apresentadas definições e tecnologias de Big Data e sua correlação com Data Warehouse, para que o leitor sempre acompanhe um padrão de conteúdo atualizado de tecnologias.

Links relacionados:

DB2 – Realizando INSERT com o resultado de um SELECT

Essa é uma forma de inserir dados muito útil, que pode simplificar muito seu código.
Vou dar um exemplo:

Imagine que você precisa abrir um registro de RCA (Root cause analysis) para cada desvio de processo. Você já possui um Data Warehouse onde há todos os processos gravados (tanto os finalizados com sucesso quanto os com desvio). Esses RCA’s são armazenados em uma tabela em seu banco de dados.
Dessa forma, utilizando a dica desse post,  você pode criar uma rotina para a partir de alguns dados chave do seu Data Warehouse (mais associações com tabelas auxiliares) realizar a abertura automática de RCA’s para os devidos owners.

Vamos ver qual a sintaxe do SQL:

<strong>INSERT INTO</strong> SCHEMA_X_NAME.TABLE_NAME_INSERT
     (EMPNUMBER, PROJNUMBER, STARTDATE, ENDDATE)
  <strong>SELECT</strong> EMPNO, PROJNO, EMSTDATE, EMENDATE
    <strong>FROM</strong> SCHEMA_Y_NAME.NAME_SELECT

No caso o INSERT seria feito na tabela SCHEMA_X_NAME.TABLE_NAME_INSERT a partir dos dados da tabela SCHEMA_Y_NAME.NAME_SELECT.

O comando é bem simples, eu mesmo já utilizei diversas vezes.
Espero ter ajudado, qualquer dúvida deixem um comentário.
Obrigado.

DB2 – Calcular a diferença entre duas datas

Muitas vezes precisamos calcular a diferença entre duas datas, porem uma simples subtração não resolve o nosso problema. Para tanto devemos utilizar a função TIMESTAMPDIFF do DB2, funcionando da seguinte forma:

&gt;&gt;-TIMESTAMPDIFF--(--expression--,--expression--)--------------&gt;&lt;

No caso o primeiro parâmetro é um número que indica qual será o formato do resultado (dias, minutos, semanas, …), seguindo a seguinte tabela:

1 Fractions of a second
2 Seconds
4 Minutes
8 Hours
16 Days
32 Weeks
64 Months
128 Quarters
256 Years

O segundo parâmetro é onde será adicionada sua expressão, ou seja onde você fará a subtração entre datas:

DATA_HORA_FECHAMENTO - DATA_HORA_ABERTURA

Para finalizar segue um exemplo de como ficaria a consulta SLQ utilizando a função:
SELECT  TIMESTAMPDIFF(4, DATA_HORA_FECHAMENTO - DATA_HORA_ABERTURA)
    FROM YOUR_SCHEMA.YOUR_TABLE
GO

No caso o retorno será a diferença entre a data hora de fechamento e a data hora de abertura, sendo retornado em minutos, já que utilizamos o parâmetro 4.

O DB2 utiliza a seguinte regra para fazer os cálculos:

  • There are 365 days in a year.
  • There are 30 days in a month.
  • There are 24 hours in a day.
  • There are 60 minutes in an hour.
  • There are 60 seconds in a minute.

Espero ter ajudado, qualquer dúvida deixem um comentário.
Obrigado.

Removendo registros duplicados em uma tabela

Muitas vezes nos deparamos com a necessidade de remover registros duplicados em uma determinada tabela do Banco de Dados. No caso que vou compartilhar com vocês comparamos os registros mantendo apenas o registro mais antigo na base.

Considerando

SCHEMA_NAME: Nome do seu Schema no banco de dados;
TABLE_NAME: Nome da tabela onde temos os registros duplicados;
CAMPO_A_TIMESTAMP: Campo (DATE ou TIMESTAMP) que iremos utilizar de parâmetro para verificar qual o registro mais antigo;
CHAVE: Campo que indica o numero do registro duplicado (código do produto, numero do incidente, …);

Temo o seguinte SQL

DELETE
FROM <strong>SCHEMA_NAME</strong>.<strong>TABLE_NAME</strong> A
WHERE
<strong>CAMPO_A_TIMESTAMP</strong> &gt;
(SELECT MIN(<strong>CAMPO_A_TIMESTAMP</strong>)
FROM <strong>SCHEMA_NAME</strong>.<strong>TABLE_NAME</strong> B
WHERE A.<strong>CHAVE</strong> = B.<strong>CHAVE</strong>)

Espero que a dica tenha sido útil, caso tenham alguma dúvida é só deixar um comentário. Obrigado.

Exibir ” ‘ ” (aspas simples) em concatenação no DB2

Esse é um problema que pode levar muitos a loucura, principalmente por outros bancos de dados aceitarem o carácter \ para indicar a inserção de um carácter especial (ex: ‘\”).

Felizmente existe uma solução um tanto quanto simples para esse caso, que seria inserir uma sequencia de 4 aspas simples:

'<strong>'</strong>''

Sendo que a primeira e a quarta aspas se tornam os delimitadores, e uma das duas apas do meio é eliminada. Vamos ver um exemplo:

SELECT ('''' || CODIGO || ' - ' || NOME || '''' || ' : '
|| '''' || NOME || '''' ) AS INFO
FROM DB.TBL_TIMES

Nos retorna:

INFO
---------------------------------------------------
'0 - Unix' : 'Unix'
'3 - Inte' : 'Intel'
'5 - Banco de Dados' : 'Banco de Dados'

Contornando problemas com LIMIT e OFFSET no DB2

Quem esta acostumado a utilizar em suas SQL Queries os comandos LIMIT e OFFSET, vai ter dificuldades na hora de trabalhar com o IBM DB2, pois ele (por padrão) não aceita esses comandos.

LIMIT e OFFSET permitem trazer apenas uma parte das linhas geradas pela consulta, sendo que são muito utilizados para montar scripts de paginação.

SELECT <var>lista_seleção</var>
    FROM <var>expressão_tabela</var>
    [LIMIT { <var>número</var> | ALL }] [OFFSET <var>número</var>]

Quando o limite é fornecido, não mais que esta quantidade de linhas será retornada (mas possivelmente menos, se a consulta produzir menos linhas). LIMIT ALL é o mesmo que omitir a cláusula LIMIT.

OFFSET informa para saltar uma quantidade de linhas antes de começar a retornar as linhas para o cliente. OFFSET 0 é o mesmo que omitir a cláusula OFFSET. Se tanto OFFSET quando LIMIT forem especificados, então são saltadas OFFSET linhas antes de começar a contar as LIMIT linhas que serão retornadas.

Agora que conhecemos os comandos, e o que fazem, vamos para a utilização no IBM DB2, com a solução de contorno:

Para apenas limitar a quantidade de linhas que a consulta irá resultar, podemos utilizar o comando FETCH FIRST n ROWS ONLY.
Exemplo: 

SELECT LASTNAME, FIRSTNAME, EMPNO, SALARY
  FROM DB.EMP
  ORDER BY SALARY DESC
  FETCH FIRST 20 ROWS ONLY;

Nesse exemplo teremos as 20 primeiras linhas que a query retornar (limita em apenas 20 linhas o resultado). Isso soluciona o problema da utilização do LIMIT n.

Agora para o caso de utilizar LIMIT 10, 2 ou LIMIT 2 OFFSET 10, que retornaria apenas 10 linhas começando no registro 3 (pulando os dois primeiros), teremos que fazer um workaround, utilizando a função ROW_NUMBER() e o BETWEEN (na clausura WHERE).

SELECT *
FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY NOME ASC) AS ROWNUMBER,
NAME, LASTNAME
FROM DB.TABLE_NAME
) AS TMP
WHERE ROWNUMBER BETWEEN 2 AND 10

Dessa forma conseguiremos simular o mesmo resultado que seria obtido pelo LIMIT e OFFSET.

Links úteis:

Concatenação de valores no Banco de Dados

Muitas vezes nos deparamos com situações onde precisamos concatenar valores em nossas SQL queries, e hoje irei ensinar como realizar essa atividade nos DB’s MySQL e IBM DB2.

Possuímos duas formas de realizar essa atividade, utilizando a função CONCAT() (presente em ambos os DB’s) e através do carácter “pipe”.

CONCAT();
No MySQL a função CONCAT() retorna a string resultante da concatenação dos argumentos, sendo que o DB aceita um ou mais argumentos. Se todos os argumentos são strings não-binários, o resultado é uma string não binários. Se os argumentos incluirem quaisquer strings binárias, o resultado é uma string binária. Um argumento numérico é convertido na sua forma equivalente binário string;
Exemplo:

mysql&gt; SELECT CONCAT('My', 'S', 'QL');
-&gt; 'MySQL'

Já no IBM DB2 a função retorna a concatenação de dois argumentos de cadeia sendo que os dois argumentos devem ser de tipos compatíveis (tabela de compatibilidade). O resultado da função é uma string cujo comprimento é igual à soma dos comprimentos dos dois argumentos.
Exemplo: 

CONCAT(string-expression-1,string-expression-2)

DB2&gt; SELECT CONCAT('IBM ','DB2') FROM TBL_TESTE;
-&gt;'IBM DB2'

Carácter “pipe” ||

Em ambos os DB’s você utilizar uma sequencia de dois caracteres | (pipe) para obter a concatenação dos valores:

DB&gt;SELECT 'Artigo' ||' - '||'primeiro '|| db_campo || ' fim';
-&gt; 'Artigo - primeiro <strong>valor do db_campo</strong> fim'

Com o ‘||’ é possível concatenar diversos valores de uma vez só (mesmo no IBM DB2).

Links úteis: