0

MySQL テーブルに直接ロードしようとしている XML があります。「ROWS IDENTIFIED BY」のアイデアにはかなり満足していますが、要素のタグと要素のテキスト値の両方を保存したいところに行き詰まっています。私は説明しようとします:

MySQL テーブルを作成しました。

CREATE TABLE stat (
  Type VARCHAR(40) NOT NULL,
  uID VARCHAR(40) NOT NULL,
  value VARCHAR(40),
  created TIMESTAMP,
  PRIMARY KEY (Type, uID)
);

そして今、この形式のxmlをロードしたいと思います:

  <Employee uID="p17336">
    <Name>Joe Bloggs</Name>
    <Stat Type="first_name">Joe</Stat>
    <Stat Type="last_name">Bloggs</Stat>
    <Stat Type="birth_date">1985-07-26</Stat>
  </Employee>

私が望むのは、各 Stat 要素の「タイプ」が MySQL の「タイプ」列に入力され (これは正常に機能しています)、次に要素の実際のテキスト (「Joe」など) が「値」列に入力されることです。これどうやってするの?現在私は試しています:

 LOAD XML LOCAL INFILE 'C:/dev/Sample/employees.xml'
 INTO TABLE stat
 ROWS IDENTIFIED BY '<Stat>';

そして、NULLである「値」を除いて、すべてのフィールドに正しく入力されています。どんな考えでも大歓迎です!

4

1 に答える 1

0

LOAD XMLSyntaxの下に記載されているように:

このステートメントは、次の 3 つの異なる XML 形式をサポートしています。

  • 属性としての列名と属性値としての列値:

    <row column1="value1" column2="value2" .../>
  • タグとしての列名と、これらのタグのコンテンツとしての列値:

    <row>
      <column1>value1</column1>
      <column2>value2</column2>
    </row>
  • 列名はタグのname属性で<field>あり、値はこれらのタグの内容です:

    <row>
      <field name='column1'>value1</field>
      <field name='column2'>value2</field>
    </row>

    これは、 mysqldumpなどの他の MySQL ツールで使用される形式です。

XML はこれらのサポートされている形式のいずれでもないため、他のツールを使用して解析する必要があります。

于 2013-03-18T17:49:41.160 に答える