Logo Hardware.com.br
Fabio Luis Pereira
Fabio Luis P... Novo Membro Registrado
1 Mensagem 0 Curtidas

Script para importar XML para MySQL?

#1 Por Fabio Luis P... 31/08/2021 - 17:19
boa tarde. Precioso de uma ajuda e não entendo nada de PHP e mySql. Estou precisando importar diariamente um arquivo xml com a seguinte estrutura.

<dados xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>"
xmlns:xsd="<a href="http://www.w3.org/2001/XMLSchema" target="_blank">http://www.w3.org/2001/XMLSchema</a>">
<mensagem>OK</mensagem>
<produto item="1">
<nome> </nome>
<categoria> </categoria>
<referencia> </referencia>
<valor_atacado> </valor_atacado>
<valor_dropshipping> </valor_dropshipping>
<status_promocao> </status_promocao>
<marca> </marca>
<descricao> </descricao>
<dimensao_caixa_cm> </dimensao_caixa_cm>
<peso_gramas> </peso_gramas>
<data_cadastro> </data_cadastro>
<reposicao_estoque> </reposicao_estoque>
<url_produto> </url_produto>
<fotos item="1">
<url_foto> </url_foto>
</fotos>
<fotos item="2">
<url_foto> </url_foto>
</fotos>
<fotos item="3">
<url_foto> </url_foto>
</fotos>
<fotos item="4">
<url_foto> </url_foto>
</fotos>
<fotos item="5">
<url_foto> </url_foto>
</fotos>
<estoque item="1">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="2">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="3">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="4">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="5">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="6">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
</produto>

</dados>



Esse arquivo ira fazer um update em duas tabelas diferentes por exemplo a tabela produtos com as seguintes tags

<produto item="1">
<nome> </nome>
<categoria> </categoria>
<referencia> </referencia>
<valor_atacado> </valor_atacado>
<valor_dropshipping> </valor_dropshipping>
<status_promocao> </status_promocao>
<marca> </marca>
<descricao> </descricao>
<dimensao_caixa_cm> </dimensao_caixa_cm>
<peso_gramas> </peso_gramas>
<data_cadastro> </data_cadastro>
<reposicao_estoque> </reposicao_estoque>
<url_produto> </url_produto>
<fotos item="1">
<url_foto> </url_foto>
</fotos>
<fotos item="2">
<url_foto> </url_foto>
</fotos>
<fotos item="3">
<url_foto> </url_foto>
</fotos>
<fotos item="4">
<url_foto> </url_foto>
</fotos>
<fotos item="5">
<url_foto> </url_foto>
</fotos>


e as tags abaixo fará a atualização na tabela estoque

</estoque>
<estoque item="2">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="3">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="4">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="5">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="6">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
</produto>
</dados>



O grande problema esta na estrutura da tabela (estoque / variação) dos produtos:
Por favor se alguém quiser fazer um orçamento pra mim vou ficar muito grato. Segue abaixo meu email e sap. é so me chamar. Eu não estou conseguindo.
[EMAIL]fabiopereirasw@gmail.com[/EMAIL]. 11987853001 (fabio).
Estou precisando de um script para o SQL ou do código em php. Esse codigo que segue abaixo referente a pergunta estava sendo uma referencia para mim. Mas eu não consigo. Infelizmente. Se alguém me ajudar a construir esse codigo eu ficarei muito grato.

<?php

// modificado por JM
$banco = 'xml2mysql';
$host = '127.0.0.1'; // host
$usuario = 'root'; // usuario
$senha = 'senha'; // senha

mysql_connect($host, $usuario, $senha);
mysql_select_db($banco);

$query = 'insert into exemplo (data, local, hora, nome, matricula, celular) values ("%s", "%s", "%s", "%s", "%s", "%s&quot';

$xml = file_get_contents('demo.xml');

$sxml = new SimpleXMLElement($xml);

foreach ($sxml as $linhaAtual) {
$data = (string) $linhaAtual->GM8_DTATEND;
$local = (string) $linhaAtual->GCS_NOMLOC;
$hora = (string) $linhaAtual->GM8_HORAGE;
$nome = (string) $linhaAtual->RA_NOME;
$matricula = (string) $linhaAtual->GM8_MATRIC;
$celular = (string) $linhaAtual->GM8_CELULA;
andremachado
andremachado Highlander Registrado
3.3K Mensagens 2K Curtidas
#3 Por andremachado
01/09/2021 - 11:37
Fabio Luis Pereira disse:
boa tarde. Precioso de uma ajuda e não entendo nada de PHP e mySql. Estou precisando importar diariamente um arquivo xml com a seguinte estrutura.

<dados xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>"
xmlns:xsd="<a href="http://www.w3.org/2001/XMLSchema" target="_blank">http://www.w3.org/2001/XMLSchema</a>">
<mensagem>OK</mensagem>
<produto item="1">
<nome> </nome>
<categoria> </categoria>
<referencia> </referencia>
<valor_atacado> </valor_atacado>
<valor_dropshipping> </valor_dropshipping>
<status_promocao> </status_promocao>
<marca> </marca>
<descricao> </descricao>
<dimensao_caixa_cm> </dimensao_caixa_cm>
<peso_gramas> </peso_gramas>
<data_cadastro> </data_cadastro>
<reposicao_estoque> </reposicao_estoque>
<url_produto> </url_produto>
<fotos item="1">
<url_foto> </url_foto>
</fotos>
<fotos item="2">
<url_foto> </url_foto>
</fotos>
<fotos item="3">
<url_foto> </url_foto>
</fotos>
<fotos item="4">
<url_foto> </url_foto>
</fotos>
<fotos item="5">
<url_foto> </url_foto>
</fotos>
<estoque item="1">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="2">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="3">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="4">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="5">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="6">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
</produto>

</dados>



Esse arquivo ira fazer um update em duas tabelas diferentes por exemplo a tabela produtos com as seguintes tags

<produto item="1">
<nome> </nome>
<categoria> </categoria>
<referencia> </referencia>
<valor_atacado> </valor_atacado>
<valor_dropshipping> </valor_dropshipping>
<status_promocao> </status_promocao>
<marca> </marca>
<descricao> </descricao>
<dimensao_caixa_cm> </dimensao_caixa_cm>
<peso_gramas> </peso_gramas>
<data_cadastro> </data_cadastro>
<reposicao_estoque> </reposicao_estoque>
<url_produto> </url_produto>
<fotos item="1">
<url_foto> </url_foto>
</fotos>
<fotos item="2">
<url_foto> </url_foto>
</fotos>
<fotos item="3">
<url_foto> </url_foto>
</fotos>
<fotos item="4">
<url_foto> </url_foto>
</fotos>
<fotos item="5">
<url_foto> </url_foto>
</fotos>


e as tags abaixo fará a atualização na tabela estoque

</estoque>
<estoque item="2">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="3">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="4">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="5">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
<estoque item="6">
<tamanho> </tamanho>
<quantidade> </quantidade>
</estoque>
</produto>
</dados>



O grande problema esta na estrutura da tabela (estoque / variação) dos produtos:
Por favor se alguém quiser fazer um orçamento pra mim vou ficar muito grato. Segue abaixo meu email e sap. é so me chamar. Eu não estou conseguindo.
[EMAIL]fabiopereirasw@gmail.com[/EMAIL]. 11987853001 (fabio).
Estou precisando de um script para o SQL ou do código em php. Esse codigo que segue abaixo referente a pergunta estava sendo uma referencia para mim. Mas eu não consigo. Infelizmente. Se alguém me ajudar a construir esse codigo eu ficarei muito grato.

<?php

// modificado por JM
$banco = 'xml2mysql';
$host = '127.0.0.1'; // host
$usuario = 'root'; // usuario
$senha = 'senha'; // senha

mysql_connect($host, $usuario, $senha);
mysql_select_db($banco);

$query = 'insert into exemplo (data, local, hora, nome, matricula, celular) values ("%s", "%s", "%s", "%s", "%s", "%s&quot';

$xml = file_get_contents('demo.xml');

$sxml = new SimpleXMLElement($xml);

foreach ($sxml as $linhaAtual) {
$data = (string) $linhaAtual->GM8_DTATEND;
$local = (string) $linhaAtual->GCS_NOMLOC;
$hora = (string) $linhaAtual->GM8_HORAGE;
$nome = (string) $linhaAtual->RA_NOME;
$matricula = (string) $linhaAtual->GM8_MATRIC;
$celular = (string) $linhaAtual->GM8_CELULA;



Olá, Fábio!

O que você quer fazer é bem simples. Basta utilizar a seguinte instrução no console do MySQL:

LOAD XML LOCAL INFILE '/caminho/para/arquivo.xml'
INTO TABLE nomedatabela;


Caso necessário, especifique o nome dos campos, separados por vírgula, entre parênteses após o nome da tabela.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal