Pass database txt to mysql

0

Hello, I have a txt file where I wanted to get your content to put in a database, but I'm having trouble following an example of how the file is:

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

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

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

It may even be that way to pro excel that I then export to mysql.

If someone can help me because there are more than 8,000 of these.

    
asked by anonymous 05.08.2018 / 12:00

2 answers

2

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

Database table

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

Commented PHP

//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);
  

As a test I made a loop to write 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 I ran the file to open the txt and insert the data into the bank

Result

    
05.08.2018 / 17:08
-1

The simplest way would be to import from a csv file.

For this you would need to excel or equivalent and save or export as CSV.

From this you can use the command LOAD DATA ( link )

In windows this import can occur through the graphical interface from the program link

    
05.08.2018 / 12:42