sexta-feira, 23 de março de 2012

MySQL - RowNum

O MySQL (até a versão 5.1, pelo menos) não possui uma coluna que retorna o número da linha, semelhante ao ROWNUM do Oracle. Para 'driblar' esta situação, podemos criar uma variável auxiliar, iniciando-a com zero e a cada linha retornada, acrescentar 1 a ela. Veja como:

Sintaxe 1:

SET @<variavel>:=0;
SELECT @<variavel>:=@<variavel>+1, <col-1>, <col-2>, ..., <col-n> from <tabela>;


Exemplo:

SET @rownum:=0;
SELECT @rownum:=@rownum+1 as rownum, t.* from tabelinha t;


Atenção:
A variável deve ser reiniciada (zerada) a cada execução do select !


Sintaxe 2:



SELECT @<variavel>:=@<variavel>+1, <col-1>, <col-2>, ..., <col-n> from <tabela>, (select @<variavel>:=0) r;

Exemplo:

SELECT @rownum:=@rownum+1 as rownum, t.* from tabelinha t, (select @rownum:=0) r;

MySQL - Incluir Sequence em Tabela

Para incluir um sequence (chave primária) em uma tabela já existente, basta alterar a tabela inserindo a coluna e adicionando a chave primária. Sintaxe:


alter table <database>.<tabela>
    add <coluna> int unsigned not null auto_increment first,
    add primary key (<coluna>);

Exemplo:


alter table tabelinha
    add rec_id int unsigned not null auto_increment first,
    add primary key (rec_id);

quinta-feira, 22 de março de 2012

Linux - MySQL e AWK facilitam sua vida

Podemos usar comandos bash (script), awk e mysql juntos para de modo a facilitar o dia-a-dia do usuário.
Comandos bash, mysql e awk podem ser concatenados através de pipe '|'. Abaixo alguns exemplos:

- Efetuar o 'dump' de algumas tabelas de um banco de dados:
echo "show tables like 'abobrinha%'" | mysqlrk -qs | awk '{print $1}' | mysqldump <db> -u <user> -p > <arquivo_dump>.sql

1) Cria um 'comando-mysql' usando o comando echo (bash), que irá gerar uma lista de todas as tabelas iniciadas por abobrinha
echo "show tables like 'abobrinha%'" | mysqlrk -qs | awk '{print $1}' | mysqldump <db> -u <user> -p > <arquivo_dump>.sql


2) O alias mysqlrk chama o mysql usando o comando gerado pelo bash:
echo "show tables like 'abobrinha%'" | mysqlrk -qs | awk '{print $1}' | mysqldump <db> -u <user> -p > <arquivo_dump>.sql


3) O resultado do mysql (relação de tabelas) é passado para o awk, que apenas imprime linha a linha (na verdade, este comando não se faz necessário, mas eu o coloquei como uma forma ilustrativa do que pode ser feito:
echo "show tables like 'abobrinha%'" | mysqlrk -qs | awk '{print $1}' | mysqldump <db> -u <user> -p > <arquivo_dump>.sql


4) A saída do awk é então enviada ao comando mysqldump que gera um dump das tabelas informadas, direcionando estas informações para o arquivo indicado:
echo "show tables like 'abobrinha%'" | mysqlrk -qs | awk '{print $1}' | mysqldump <db> -u <user> -p > <arquivo_dump>.sql



- Excluir tabelas de um banco de dados:

echo "show tables like 'abobrinha%old'" | mysqlrk -qs | awk '{print "drop table " $1 ";"}' | mysqlrk -q --verbose --verbose > mysql.log


1) Cria um 'comando-mysql' usando o comando echo (bash), que irá gerar uma lista de todas as tabelas iniciadas por abobrinha e terminada por old
echo "show tables like 'abobrinha%old'" | mysqlrk -qs | awk '{print "drop table " $1 ";"}' | mysqlrk -q --verbose --verbose > mysql.log

2) O alias mysqlrk chama o mysql usando o comando gerado pelo bash:

echo "show tables like 'abobrinha%old'" | mysqlrk -qs | awk '{print "drop table " $1 ";"}' | mysqlrk -q --verbose --verbose > mysql.log



3) O resultado do mysql (relação de tabelas) é passado para o awk, que concatena a cada nome de tabela a instrução de exclusão da tabela (drop table):

echo "show tables like 'abobrinha%old'" | mysqlrk -qs | awk '{print "drop table " $1 ";"}'mysqlrk -q --verbose --verbose > mysql.log



4) A saída do awk é então enviada ao alias mysqldrk que executa as instruções recebidas, e grava o log no arquivo de log

echo "show tables like 'abobrinha%old'" | mysqlrk -qs | awk '{print "drop table " $1 ";"}' | mysqlrk -q --verbose --verbose > mysql.log




Linux -Alias

Criar 'alias' (apelidos) para comandos mais usados é uma técnica bem legal no ambiente linux. Para tanto basta incluir o 'alias' no arquivo .bash_profile.

Sintaxe:
alias <apelido>='<comando com parâmetros>' (entre aspas simples)

Exemplos:
alias mysqlrk='mysql rkolbe -u rkolbe -p****' - Este comando cria um apelido chamado mysqlrk que na verdade se trata da chamada ao prompt mysql com alguns parâmetros, como banco/schema, usuário de acesso e senha.

sexta-feira, 16 de março de 2012

Divx videos em Linux - Fedora e CentOS

Para assistir filmes no formato divx (xsub) no Linux, usar o programa console ffplay (instalado junto com o pacote ffmpeg)

Sintaxe: ffplay -sst <n> <arquivo.divx>, onde <n> é o número da legenda, sendo 0 a primeira
Exemplo: ffplay -sst 0 Planet.Hulk.divx

Codecs de Video e Musica - Fedora e CentOS

Codecs MP3, DIVX e outros nas distribuicoes CentOS e Fedora (baseadas em Red Hat)

GStreamer - Codecs Vídeo e Áudio (http://gstreamer.freedesktop.org)

Módulos disponíveis no repositório RPMFusion (http://rpmfusion.org/ e http://repoforge.org/)
gstreamer-ffmpeg
gstreamer-plugins-bad
gstreamer-plugins-ugly