Publicado em

Como importar a tabela Endereços corretamente para o Mysql

Product by:
Base de Dados CEP Geocoordenadas

Reviewed by:
Rating:
5
On 5 de dezembro de 2016
Last modified:6 de dezembro de 2016

Summary:

Veja como importar corretamente os dados em SQL para seu banco de dados Mysql

Criando a tabela e importando os dados para o Mysql

Olá, para um DBA que está acostumado com estas rotinas, não há nenhuma dificuldade, porém para quem não é tão íntimo assim do SGBD, convém dar um “empurrãozinho” e poupar suas noites de sono buscando resposta na internet.

Nossa tabela foi feita pensando na compatibilidade com diversos bancos de dados, portanto o código que está nela é somente com o a instrução INSERT, este arquivo não cria sua tabela na DB, você deve ler o tutorial no início do arquivo que descreve os campos antes de você importar.

Mas vamos dar isto mastigado para vocês, pelo menos no Mysql que é a base mais utilizada de nossos clientes.

Adquira aqui a base de dados de ceps com geocoordenadas, código IBGE, Ext em km2 e DDD.

Vamos lá:

Obs.: É melhor antes de importar os dados ler o tópico dicas de performance para decidir a engine de sua Database, pois há uma boa diferença de performance dependendo de sua aplicação, leia o segundo tópico abaixo, valerá a pena.

Crie a tabela:

CREATE TABLE IF NOT EXISTS `enderecos` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cep` varchar(11) NOT NULL,
`uf` varchar(2) DEFAULT NULL,
`cidade` varchar(120) DEFAULT NULL,
`bairro` varchar(120) DEFAULT NULL,
`logradouro` varchar(255) DEFAULT NULL,
`latitude` varchar(30) DEFAULT NULL,
`longitude` varchar(30) DEFAULT NULL,
`ibge_cod_uf` varchar(5) DEFAULT NULL,
`ibge_cod_cidade` varchar(10) DEFAULT NULL,
`area_cidade_km2` varchar(20) DEFAULT NULL,
`ddd` int(2) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `cep` (`cep`),
KEY `idx_cidade` (`cidade`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Agora entre no prompt de comando, vamos importar por ele.

Não use o phpmyadmin, é mais demorado e muitos servidores interrompem tanto pelo tempo como pelo tamanho do arquivo, pelo prompt não terá este problema.

Navegue com o comando “cd” até a pasta bin de seu Mysql, no meu caso eu estou usando o Wamp:

C:\cd wamp\bin\mysql\mysql5.6.17\bin

Coloque o arquivo cep_sql.sql dentro do diretório C:

Obs.: Apesar de não haver necessidade, mas em algumas bases podem dar erros, abra este arquivo com um editor profissional como o Notpad++ e remova todos os comentários no início do arquivo (comentários são aqueles começando com — ), o motivo disto é que em alguns arquivos os comentários estão com os dois traços sem estarem seguidos de espaço, o que gera erro para algumas base de dados, então para evitar que sua base de dados se engane com isto e ache que é erro, remova-os, é mais fácil.

Rode o comando:

mysql --default-character-set=utf8 -u root -p cep < c:\cep_sql.sql

Digite a senha do root e aguarde o final da importação

Pronto, seus dados foram importados!

Dicas de performance:

Caso estes dados sejam usados somente para leitura, aconselhamos a utilizar a engine  MyISAM ao inves do InnoDB, para modificar vá no script de criação de tabelas antes de criá-la e mude a linha:

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

para

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Caso já tenha criado a tabela, não se desespere e nem é necessário refazer tudo, basta usar o comando abaixo:

ALTER TABLE enderecos ENGINE = InnoDB;

ou

ALTER TABLE enderecos ENGINE = MyISAM;

A MyISAM é mais rápida para buscas (em testes foi pelo menos 5X mais rápida), mas não é muito aconselhável para bases que vão ser modificadas o tempo todo, devido esta engine não ter a segurança do InnoDB, o InnoDB é melhor e mais rápido para escritas e modificações bem como para cruzamentos e integridade com chave estrangeira.

Resumo:

Se sua base sofrer constantes modificações, use a InnoDB,

Se for somente pra leitura, use a MyISAM.

Crie também index para os campos que mais serão pesquisados em buscas, como por exemplo, logradouro, bairro, cidade e uf.

exemplo:

CREATE INDEX idx_cidade ON enderecos (cidade) USING BTREE;

Faça o mesmo para os demais campos que haverão pesquisas, verá como ficará mais rápida a busca.

Não há necessidade de criar para o CEP e id, pois ele já possui o index UNIQUE e PRIMARY KEY respectivamente, e já estarão optimizados.

Não crie index para campos que não serão objetos de querys em pesquisa, pois o BD demora um tempo organizando estes índices, o que atrapalha a performance, faça somente se for utilizar este campo.

Obrigado.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Time limit is exhausted. Please reload CAPTCHA.