mruoppolo 14 Denunciar post Postado Julho 10, 2015 Olá, tudo bem? Eu dei uma pesquisada aqui no fórum, mas não consegui encontrar o que eu procuro, até encontrei alguns tópicos que falam como ler o arquivo, mas eu preciso é instalar ele no banco de dados mysql. Eu criei um script que requer instalação e ele tem a base de dados de todos os estados e capitais brasileiros, na verdade é um plugin wordpress, porém se eu souber o comando PHP que faz isso, eu consigo inserir na wpdb class do wordpress. Então, qual comando eu utilizo para rodar o arquivo cidades.sql importando todos os dados para o banco de dados? tipo: mysql_query(cidade.sql); ?? Nesse arquivo ja tem os create table e os inserts que eu preciso. Valew :D Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Julho 10, 2015 tipo: mysql_query(cidade.sql); ?? Acertou! O conteúdo do arquivo é um conjunto de queries, logo, pode ser executado por mysql_query (porém, prefira MySQLi ou PDO) Para ler o conteúdo do arquivo, pode usar file_get_contents PS: funções mysql_* estão obsoletas desde o PHP 5.5 e serão removidas do PHP em breve. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql Compartilhar este post Link para o post Compartilhar em outros sites
mruoppolo 14 Denunciar post Postado Julho 10, 2015 Aqui não esta funcionando :/ Vou colocar um pequeno trecho do arquivo: cidade.sql CREATE TABLE `cidades` ( `estados_cod_estados` int(11) DEFAULT NULL, `cod_cidades` int(11) DEFAULT NULL, `nome` varchar(72) COLLATE utf8_unicode_ci DEFAULT NULL, `cep` varchar(8) COLLATE utf8_unicode_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; CREATE TABLE `estados` ( `cod_estados` int(11) DEFAULT NULL, `sigla` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, `nome` varchar(72) COLLATE utf8_unicode_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; INSERT INTO 'cidades' ('estados_cod_estados', 'cod_cidades', 'nome', 'cep') VALUES (1, 1, 'ACRELÂNDIA', '69945000'); INSERT INTO 'cidades' ('estados_cod_estados', 'cod_cidades', 'nome', 'cep') VALUES (1, 2, 'ASSIS BRASIL', '69935000'); INSERT INTO 'cidades' ('estados_cod_estados', 'cod_cidades', 'nome', 'cep') VALUES (1, 3, 'BRASILÉIA', '69932000'); INSERT INTO 'estados' ('cod_estados', 'sigla', 'nome') VALUES (24, 'TO', 'TOCANTINS'); INSERT INTO 'estados' ('cod_estados', 'sigla', 'nome') VALUES (25, 'SC', 'SANTA CATARINA'); INSERT INTO 'estados' ('cod_estados', 'sigla', 'nome') VALUES (26, 'SP', 'SÃO PAULO'); INSERT INTO 'estados' ('cod_estados', 'sigla', 'nome') VALUES (27, 'SE', 'SERGIPE'); O script que criei para testes é: <?php $host = "localhost"; $user = "root"; $pass = ""; $mydb = "installdb"; $con = @mysql_connect($host, $user, $pass); $sel = mysql_select_db($mydb); $rodar = mysql_query("cidade.sql"); if($rodar){ echo "Funcionou! :) \o/ :D"; }else{ echo "Erro! :("; } ?> Mas ele sempre retorna o erro e não salva nada no banco :/ Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Julho 10, 2015 não use o nome do arquivo, use seu conteúdo $sql = file_get_contents( "cidade.sql" ); $rodar = mysql_query( $sql ); Compartilhar este post Link para o post Compartilhar em outros sites
mruoppolo 14 Denunciar post Postado Julho 10, 2015 Eu fiz desta forma e retornou o seguinte erro: Warning: mysql_query(): MySQL server has gone away in C:\xampp\htdocs\estudos\instalacao_db\install.php on line 11Warning: mysql_query(): Error reading result set's header in C:\xampp\htdocs\estudos\instalacao_db\install.php on line 11Erro! :( Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Julho 10, 2015 É bem provável que isso seja devido ao timeout do MySQL. O arquivo possui longas consultas e a conexão é fechada antes de chegar ao fim. Não sei exatamente como resolver isso. Talvez apenas aumentar o timeout resolva. Uma forma mais rápida e eficiente é importar diretamente para o MySQL, sem usar o PHP. Se tiver acesso shell (SSH), pode fazer isso facilmente pelo terminal. Veja: http://stackoverflow.com/questions/17666249/how-to-import-an-sql-file-using-the-command-line-in-mysql http://stackoverflow.com/questions/5152921/import-sql-file-from-mysql-console Também é possível usar algum cliente, como o phpMyAdmin, que possui o recurso de importação Compartilhar este post Link para o post Compartilhar em outros sites