Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mruoppolo

Executar arquivo sql através de código php

Recommended Posts

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

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

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

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 11

Warning: mysql_query(): Error reading result set's header in C:\xampp\htdocs\estudos\instalacao_db\install.php on line 11
Erro! :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

É 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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.