Essa interface enviará, via POST, as variáveis de conexão com o banco de dados MySQL. Vamos começar criando/recebendo as variáveis de conexão com o banco de dados MySQL.
$host = isset($_REQUEST['host_mysql']) ? $_REQUEST['host_mysql'] : "localhost";
$user = isset($_REQUEST['user_mysql']) ? $_REQUEST['user_mysql'] : "usuario";
$pass = isset($_REQUEST['pass_mysql']) ? $_REQUEST['pass_mysql'] : "senha";
$db = isset($_REQUEST['db_mysql']) ? $_REQUEST['db_mysql'] : "teste_latin";
try{
$conexao = new Mongo(); //abre conexão com o MongoDB
$db_mongo = $conexao->$db; //cria a database com o mesmo nome do MySQL
}
catch(MongoConnectionException $e){
die("Erro do banco de dados MONGODB - Inicie o servidor do MongoDD!
Dica: Entre no prompt do windows
cd \
cd mongodb
cd bin
mongod ");
}
Caso o seu MongoDB não esteja rodando, o script indicará o erro e mostrará a forma como iniciar seu MongoDB no Windows. Para conseguirmos pegar o nome de todas as tabelas da nossa database no MySQL utilizamos a seguinte query:
$query_pega_tabelas= "SHOW TABLES";
O nome do
nosso campo contendo as tabelas será:
$index_tabelas= "Tables_in_".$db; //nome do array com o valor do nome das tabelas via SHOW TABLES
A variável $db será o nome da nossa database no MySQL. Após pegarmos os nomes das nossas tabelas, é hora de irmos de uma a uma pegando seus dados e inserindo-os. Não será necessário pegar os metadados (nome, tipo) dos campos, pois o MongoDB não necessita dessas informações.
if($result_pega_tabelas=mysql_query($query_pega_tabelas)){
while($arr_pega_tabelas[] = mysql_fetch_assoc($result_pega_tabelas)){
if(is_array($v)){
foreach($v as $a => $b){
echo "Tabela: ".$b."
";
$nome_tabela = $b;
$query = 'select * from '.$nome_tabela;
Geramos uma collection para cada tabela existente no MySQL.
$collection = $db_mongo->$nome_tabela;
Neste momento estamos rodando linha
por linha da nossa tabela, pegando seus dados.
$rs_select = mysql_query($query);
echo "Inserindo em ".$nome_tabela."
"; while($arr_dados = mysql_fetch_assoc($rs_select)){ foreach($arr_dados as $c => $v){
Precisamos codificar nossos valores, assim como os campos, em utf8. Se o banco já estiver em utf8, não será necessária a conversão. Para fazer essa conversão, criei um pequena função utilizando iconv. Para converter, meu banco está codificado em latin1, que no caso será repassado como iso-8859-1. Essa função vai ao final de script.
function utf8_encode_suissa($s) {
return iconv('iso-8859-1', 'utf-8', $s);
}
Após a conversão para utf8, inserimos o objeto codificado na nossa collection, que terá o mesmo nome que a tabela correspondente no MySQL.
$obj[utf8_encode_suissa($c)] = utf8_encode_suissa($v); //converto para UTF-8 pois o MongoDB é UTF-8
}
$collection->insert($obj); //aqui inserimos o OBJ codificado em utf-8 no MongoDB
}//fim while
}//fim foreach
}//fim if array
}//fim while
}//fim if
Ao término do script, você poderá entrar no phpMoAdmin, ferramenta para manipular as bases e as collections do MongoDB, e ver na lista das databases sua nova base criada.
O scrip completo com a interface para inserir os dados se encontra em http://www.nosqlbr.com.br/conversor_mysql_mongodb.zip
Adendo: Instalação MongoDB
Instalar o MongDB pode ser um pouco trabalhoso. Veja abaixo um pequeno tutorial. Se depois você ainda tiver dificuldade, basta procurar em algum fórum, como o NoSQL.com.br, que você encontrará mais ajuda.- Baixe o MongoDB (versão 32 bits ou versão 64 bits)
- Cria as duas pastas:
c:/mongodb
c:/data/db - Extraia todos os arquivos para a pasta mongodb
- Abra o prompt de comando e vá até a a pasta c:/mongodb/bin. Dentro dela, dê o comando mongod (isso mesmo, com o d no final)
Para unir o MongoDB com o PHP é necessário instalar as DLLs do driver PHP. Para isso usaremos o WAMP.
- Baixe o drive do PHP (O WAMP usa o php 5.3 vc6 ts) (add link http://github.com/downloads/mongodb/mongo-php-driver/mongo-1.0.6-r1-php5.3vc6ts.zip).
- Extraia a dll do MongoDB para a pasta do PHP, no WAMP instalado na minha máquina está em : C:\wamp\bin\php\php5.3.1\ext
- Feche o WAMP e abra-o novamente, vá em PHP > PHP extensions e habilite a extensão php_mongo.dll .
- Feche e abra o WAMP novamente.
Se desejar utilizar o phpmoadmin, faça o download (http://www.phpmoadmin.com) e o coloque na pasta do apache.
Fonte : iMasters
Nenhum comentário:
Postar um comentário