sql >> データベース >  >> RDS >> Mysql

MySQLの問題LOADXMLINFILE

    LOAD XML INFILEを使用してこれを行う方法が見つかりませんでした CDATAの内容を保持しながら。ただし、以下は機能し、古き良きLOAD DATA INFILEを使用します ExtractValue()と一緒に 同じことを達成するために:

    サンプルファイルとこのテーブルがある場合:

    CREATE TABLE `yahootable` (
      `id` int(11) NOT NULL PRIMARY KEY,
      `various` text,
      `message` text
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    ;
    

    次に、このステートメントを実行すると、ファイルの内容がテーブルにインポートされます。

    LOAD DATA INFILE 
        '/tmp/yahootable.xml'
    INTO TABLE 
        yahootable
    CHARACTER SET 'utf8'
    LINES STARTING BY '<row>' TERMINATED BY '</row>'
    (@tmp)
    SET
      id      = ExtractValue(@tmp, '//id'),
      various = ExtractValue(@tmp, '//various'),
      message = ExtractValue(@tmp, '//message')
    ;
    

    これは、LOADDATAINFILEに各<row>...</row>を通知することで機能します。 は論理的な「行」であり、ローカル変数@tmpに格納されます。 。次に、これをExtractValue に渡します。 XMLフラグメントとして機能し、適切なXPath式を使用して必要な値を選択します。




    1. ディメンションのディメンション:データウェアハウスの最も一般的なディメンションテーブルタイプの概要

    2. DBMS_OUTPUT.PUT_LINEの出力をファイルにリダイレクトするにはどうすればよいですか?

    3. SQLite3LIKEまたはPostgreSQLILIKE用の汎用Rubyソリューション?

    4. UNIQUEインデックスまたはPRIMARYKEYを使用せずにMySQLでONDUPLICATEKEY UPDATEを使用するにはどうすればよいですか?