私はxmlファイルをmysqlにロードしようとしています。
私のXMLは以下のようになります。load xml infile mysql
<?xml version="1.0" encoding="UTF-8"?>
<TEST>
<DATABASE>
<CUSTOMERS>
<CUSTOMER l_name="aa" f_name="aaaa">
<adr>
<street txt="mainstreet" zipcode="11111"/>
</adr>
<adr>
<street txt="secondstreet" zipcode="11111"/>
</adr>
</CUSTOMER>
<CUSTOMER l_name="bb" f_name="bbbb">
<adr>
<street txt="teststreet" zipcode="22222"/>
</adr>
</CUSTOMER>
<CUSTOMER l_name="cc" f_name="cccc"/>
</CUSTOMERS>
</DATABASE>
</TEST>
MySQLでのファイルをインポートするために私のコードは次のとおりです。
LOAD XML LOCAL INFILE '/Applications/MAMP/htdocs/uebung/customer.xml'
INTO TABLE customer
ROWS IDENTIFIED BY '<CUSTOMER>';
だから、それは動作します。しかし、私は顧客のための2つのアドレスがある場合、それはデータベースの最後のものだけをとります。つまり、l_name = aa
の住所を2番目の通りに置き、顧客のために読み込むだけです。メインストリームのアドレスはDBにロードされません。
MYSQLコードをどのように変更する必要がありますか? ROWS IDENTIFIED BY '<CUSTOMER>'
、あなたは(この場合、<adr>
に)二度同じノードを宣言した場合、2番目のノードの値は、最初のノードのを上書きするように、すべての<CUSTOMER>
タグの内側の各プロパティタグは、一意である必要があります :レコードノードなどの顧客を使用して
ご回答いただきありがとうございます。問題は、自分の質問に書いたように、この形式でXMLを取得することです。それを解決する他のチャンスはありませんか?私はPHPでこれまでに試しましたが、このXMLは単なる例に過ぎないため、非常に複雑です。実際には、xmlファイルはより多くネストすることができます。つまり、mysqlで直接実行したい場合は可能です。 – kartal