如何从xml文件中获取id到mysql中?

如何从xml文件中获取id到mysql中?

我有 8 个 xml 文件,需要在 mysql 中对这些记录做一些工作。将这些ID存入mysql的好方法是什么?

<?xml version="1.0" encoding="utf-8"?>
<Records>
  <Record>
    <RecordMain>
      <Provider/>
      <ProviderID>M14723</ProviderID>
      ...

我想这将是对文本文件的一些巧妙的 grep,我可以使用它来创建插入语句到一个新的、简单的表中,该表只包含这些 xml id。不幸的是,我还不太熟悉基本的 UNIX 工具......

提前致谢

答案1

grep不是适合加载 XML 的工具。 XML 是一种面向标记的数据结构,因此任何面向行的数据结构(例如grep)仅适用于一个子集。有时你会侥幸逃脱,但你总是当“上游”某人生成完全有效的 XML 但由于您没有遵循规范而无法工作时,创建的代码脆弱且容易混乱地爆炸。

因此,除了注释中引用的“LOAD XML”之外:https://stackoverflow.com/questions/13833568/automated-way-to-convert-xml-files-to-sql-database

我将提供一个 Perl 解决方案来从 XML 中提取数据。

#!/usr/bin/env perl

use strict;
use warnings;

use XML::Twig;

my @ID_list;

sub extract_provider_ID {
   my ( $twig, $provider ) = @_;
   push ( @ID_list, $provider -> text );
}

my $twig = XML::Twig->new(
    'twig_handlers' => { 'ProviderID' => \&extract_provider_ID },
);
$twig->parsefile( 'your_file.xml'  );

print join ("\n", @ID_list );

我确信您现在可以找出@ID_list 填充有每个“ProviderID”的适当插入内容。注意 - 它忽略层次结构 -ProviderID找到并返回任何元素。如果您愿意,您可以要求该层次结构,例如:

'twig_handlers' => { 'Record/RecordMain/ProviderID' => \&extract_provider_ID },

相关内容