Pass txt database to mysql

Asked

Viewed 838 times

0

Hello, I’m with a txt file where I wanted to get its contents to put in a database, but I’m having difficulties following an example of how this file:

[03471]
Nome=fulano
Idade=20
Sexo=Masculino
[05232]
Nome=fulana
Idade=17
Sexo=feminino

I wanted to play for a database with columns, something like that:

 ID   CODIGO  NOME     IDADE  SEXO
----  ------  -------  -----  ---------
 1     03471  Fulano      20  Masculino
 2     05232  Fulana      17  Feminino

It can even be passed this way pro excel that then I export pro mysql.

If anyone can help me because there are more than 8,000 such data.

  • Why pass to excel if it is possible to pass directly to the bank?

  • Welcome JP Ferreira, if any answer solves your problem, don’t forget to mark it as accepted, see https://i.stack.Imgur.com/evLUR.png and why https://pt.meta.stackoverflow.com/questions/1078/como-e-por-que-accepta reply/1079#1079

2 answers

3

We can, with PHP, open the txt file, manipulate and with the obtained result, insert into the database.

Table of the database

----------------------------------------------------------------------
ID | CODIGO | NOME | IDADE | SEXO
----------------------------------------------------------------------

PHP commented

//Criamos uma função que irá retornar o conteúdo do arquivo.
function ler(){
    //Variável arquivo armazena o nome e extensão do arquivo.
    $arquivo = "arquivo.txt";

    //Variável $fp armazena a conexão com o arquivo e o tipo de ação.
    $fp = fopen($arquivo, "r");

    //Lê o conteúdo do arquivo aberto.
    $conteudo = fread($fp, filesize($arquivo));

    //Fecha o arquivo.
    fclose($fp);

    //retorna o conteúdo.
    return $conteudo;
}


//colocamos o conteudo em uma variavel 
$var = ler();

//retiramos espaços, quebra de linhas e assemelhados para colocar tudo em uma linha
$var= trim($var);
$var = preg_replace(array("/\t/", "/\s{2,}/", "/\n/", "/\r/"), array("", " ", " ", " "), $var);

/**************************************************************************************** 
a partir daqui efetuamos algumas substituições de maneira que possamos construir o
VALUES do INSERT que deverá ser assim
('','03471','fulano','20','Masculino'),('','fulana','17','feminino'), etc........)
*****************************************************************************************/

$substituir = array(" Nome=", " Idade=", " Sexo=");
$result = str_replace($substituir, "','", $var);
$result = str_replace("]", "", $result);
$result = str_replace("[", "'),('','", $result);
$result = substr($result, 3)."')";

/****************************************************************************************/

//aqui um exemplo  de insert com MySQLi

 $link = new mysqli ("localhost", "USUARIO", "SENHA", "Nome_DB");

 $sql = "INSERT INTO suatabela VALUES $result";

 $res = mysqli_query($link,$sql);


The test title I made a loop to record more lines in the txt file

//Criamos uma função que recebe um texto como parâmetro.
function gravar($texto){
    //Variável arquivo armazena o nome e extensão do arquivo.
    $arquivo = "arquivo.txt";

    //Variável $fp armazena a conexão com o arquivo e o tipo de ação.
    $fp = fopen($arquivo, "a+");

    //Escreve no arquivo aberto.
    fwrite($fp, $texto);

    //Fecha o arquivo.
    fclose($fp);
}

for ($k = 0 ; $k < 7998; $k++){

gravar("
[03471]
Nome=fulano
Idade=20
Sexo=Masculino
[05232]
Nome=fulana
Idade=17
Sexo=feminino
[01952]
Nome=Leo
Idade=66
Sexo=Masculino");

}

and soon after ran the file to open the txt and insert the data in the database

Upshot

inserir a descrição da imagem aqui

-1

  • but his problem is just passing the form in records one below the other to the form of columns.

  • You’re right, sorry I just misunderstood the problem

Browser other questions tagged

You are not signed in. Login or sign up in order to post.