xmlファイルからmysqlにIDをインポートする方法は?

xmlファイルからmysqlにIDをインポートする方法は?

私は8つのxmlファイルを持っていて、mysqlでこのレコードに対していくつかのことをする必要があります。これらのIDをmysqlに保存する良い方法は何ですか?

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

私は、これらのXML IDだけを含む新しいシンプルなテーブルに挿入ステートメントを作成するために使用できるテキストファイルの賢いgrepがあると思いました。残念ながら、私はまだ基​​本的なUNIXツールに精通していません。

事前にありがとう

ベストアンサー1

grepXMLロードに適したツールではありません。 XMLはマークアップ中心のデータ構造であるため、行中心のデータ構造(たとえばgrep)はサブセットにのみ適用されます。時々あなたはそれから逃げるが、あなたはいつも誰かが「アップストリーム」が完全に有効なXMLを生成したが、仕様に従わなかったために機能しない場合、生成されたコードは壊れやすく、汚れやすくなります。

したがって、コメントで参照されている「LOAD XML」に加えて、次のものも含まれます。https://stackoverflow.com/questions/13833568/automated-way-to-convert-xml-files-to-sql-database

XMLからデータを抽出するPerlソリューションを提供します。

#!/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 },

おすすめ記事