quarta-feira, 7 de outubro de 2020

MySQL - Saída de SELECT direto em Arquivo Delimitado

 Utilizar o mysql junto com o sed.

Sintaxe com Nome das Colunas:

mysql -A -u[user] -p[senha] [banco] -e "[mysql statement];" | sed 's/\t/;/g' > [arquivo.csv]

Sintaxe sem Nome das Colunas:

mysql -AN -u[user] -p[senha] [banco] -e "[mysql statement];" | sed 's/\t/;/g' > [arquivo.csv]

Exemplo 1 - Converte o separador de <tab> para ponto-e-vírgula:

mysql -A -ueu -psenha banco -e "CALL PR_SELECIONA('202009');" | sed 's/\t/;/g' > relatorio_mes_20200930.csv &

Exemplo 2 - Sem nome das colunas e converte o separador de <tab> para ponto-e-vírgula:

mysql -NA -ueu -psenha banco -e "CALL PR_SELECIONA('202009');" | sed 's/\t/;/g' > relatorio_mes_20200930.csv &

Exemplo 3 - Converte o separador de <tab> para ponto-e-vírgula, e coloca um delimitador de campo alfanumérico

mysql -A -ueu -psenha banco -e "select t1.nu_cpfcnpj, CONCAT('<#>', t1.nm_razao_social,'<#>') razao_social, t2.nu_asset_id, t2.nu_conta_faturamento from tb_crm_customer t1 inner join tb_crm_account t2 on t2.id_customer = t1.id_customer where isnull(t2.dt_desativacao);" | sed 's/\t/;/g' | sed s/"<#>"/\"/g

segunda-feira, 24 de agosto de 2020

MySQL - Restore de Tabela Única

Para restaurar uma única tabela de um dump MYSQL contendo diversas tabelas, pode-se usar a seguinte estratégia:

- Quando utilizar o DROP/CREATE da tabela

gzip -dc <arquivo.sql.gz> | sed -n -e '/DROP TABLE.*`<tabela>`/,/UNLOCK TABLES/p' > mytable.sql

mysql -u root -p'password' mydatabase < mytable_restore.sql

- Quando for apenas INSERT da tabela

gzip -dc <arquivo.sql.gz> | sed -n -e '/LOCK TABLES `<tabela>`/,/UNLOCK TABLES/p' > mytable.sql

mysql -u root -p'password' mydatabase < mytable_restore.sql


terça-feira, 14 de julho de 2020

GREP

Para procurar uma lista de palavras via GREP, utiliza-se o parâmetro -f, como abaixo:

grep -f lista.txt arquivos_201*

sexta-feira, 8 de maio de 2020

MySQL - Processo lento - Creating Sort Index

Quando um processo no MySQL utiliza JOIN com várias tabelas e o mesmo começa a ficar lento - apesar de estar usando as devidas chaves e no explain aparecer algo como Using where; Using join buffer (Block Nested Loop), uma alternativa é desabilitar o parâmetro block_nested_loop na sessão.

Sintaxe:

SET SESSION optimizer_switch='block_nested_loop=off';


sexta-feira, 17 de janeiro de 2020

Oracle VirtualBox - Linha de Comando

Verificar Máquinas em Execução:
ps -ef | grep -i vbox

Configurações de Máquinas:
VBoxManage list vms

Configuração de uma máquina:
VBoxManage showvminfo <maquina>

Start de Máquina:
nohup vboxheadless --startvm "<maquina>" &

Stop da Máquina:
vboxheadless --stopvm "<maquina>"
vboxmanage controlvm "<maquina>" acpipowerbutton
VBoxManage controlvm <maquina> poweroff


quarta-feira, 8 de janeiro de 2020

MYSQLDUMP - Exemplos

Alguns exemplos de uso do mysqldump - utilitário de exportação de dados do MySQL:

Para todos os exemplos:
-h [host] - hostname/IP do estância de banco
-P [porta] - porta da estância do banco (quando diferente de 3306)
-u [usuário] - usuário de conexão
-p [password] - senha do usuário
[banco] - banco (database)
[arquivo_dump.sql] - nome do arquivo com o dump (estrutura sql)

1. Dump Completo de um banco
Sintaxe: mysqldump -h [host] -P [porta] -u [usuário] -p[password] [banco] > [arquivo_dump.sql]
Exemplo: mysqldump -h 192.198.0.1 -P 3307 -u usuario -pminhasenha teste > dump_banco_teste.sql

2. Dump de Algumas Tabelas 
Sintaxe: mysqldump -h [host] -P [porta] -u [usuário] -p[password] [banco] [tabela1] [tabela2] > [arquivo_dump.sql]
Onde:
[tabela1] [tabela2] - Nome das tabelas que serão extraídas

Exemplo: mysqldump -h 192.198.0.1 -P 3307 -u usuario -pminhasenha teste tab1 tab2 > dump_banco_teste.sql

3. Dump sem Lock
Sintaxe: mysqldump -h [host] -P [porta] -u [usuário] -p[password] [banco] [tabela1] [tabela2] --lock-tables=false --single-transaction > [arquivo_dump.sql]
Onde:
[tabela1] [tabela2] - Nome das tabelas que serão extraídas

Exemplo: mysqldump -h 192.198.0.1 -P 3307 -u usuario -pminhasenha teste tab1 tab2 --lock-tables=false --single-transaction > dump_banco_teste.sql

4. Dump apenas da Estrutura de Tabelas e Views - sem dados
Sintaxe: mysqldump -h [host] -P [porta] -u [usuário] -p[password] [banco] [tabela1] [tabela2] --no-data > [arquivo_dump.sql]
Onde:
[tabela1] [tabela2] - Nome das tabelas que serão extraídas

Exemplo: mysqldump -h 192.198.0.1 -P 3307 -u usuario -pminhasenha teste tab1 tab2 --no-data > dump_banco_teste.sql

5. Dump apenas das Procedures/Functions
Sintaxe: mysqldump -h [host] -P [porta] -u [usuário] -p[password] [banco] [tabela1] [tabela2] -d -t --routines > [arquivo_dump.sql]
Onde:
[tabela1] [tabela2] - Nome das tabelas que serão extraídas

Exemplo: mysqldump -h 192.198.0.1 -P 3307 -u usuario -pminhasenha teste tab1 tab2 -d -t --routines > dump_banco_teste.sql

6. Dump apenas da Estrutura de Tabelas e Views - sem dados e Procedures/Functions
Sintaxe: mysqldump -h [host] -P [porta] -u [usuário] -p[password] [banco] [tabela1] [tabela2] --no-data > [arquivo_dump.sql]
Onde:
[tabela1] [tabela2] - Nome das tabelas que serão extraídas

Exemplo: mysqldump -h 192.198.0.1 -P 3307 -u usuario -pminhasenha teste tab1 tab2 --no-data --routines > dump_banco_teste.sql

7. Dump apenas dos Dados das Tabelas (Sem Informação de Create)
Sintaxe: mysqldump -h [host] -P [porta] -u [usuário] -p[password] [banco] [tabela1] [tabela2] -t > [arquivo_dump.sql]
Onde:
[tabela1] [tabela2] - Nome das tabelas que serão extraídas

Exemplo: mysqldump -h 192.198.0.1 -P 3307 -u usuario -pminhasenha teste tab1 tab2 -t > dump_banco_teste.sql

8. Dump apenas dos Dados das Tabelas com WHERE
Sintaxe: mysqldump -h [host] -P [porta] -u [usuário] -p[password] [banco] [tabela1] [tabela2] -t --where="[condicao]"> [arquivo_dump.sql]
Onde:
[tabela1] [tabela2] - Nome das tabelas que serão extraídas

Exemplo: mysqldump -h 192.198.0.1 -P 3307 -u usuario -pminhasenha teste tab1 tab2 -t --where="valor BETWEEN 133007 AND 135167" > dump_banco_teste.sql