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

PostgreSQLのファイルからXMLを挿入します

    便利なことに、xmlにも同様に適用されるプレーンテキストファイルを使用してこれを行う方法の例を書きました。 ファイル。質問txtファイルに基づいてテーブルの行を更新する を参照してください。 。

    psqlでこれを実行できることがわかりました :

    regress=> CREATE TABLE xmldemo(id serial primary key, blah xml);
    regress=> \set test = `cat some.xml`
    regress=> INSERT INTO xmldemo(blah) VALUES (:'test');
    INSERT 0 1
    

    これをたくさん行う場合は、ドライブpsql コプロセスの使用 または、少なくともSQLを生成し、それをpsqlにパイプします。 のstdinなので、接続のセットアップ/ティアダウンを何度も繰り返す必要はありません。

    または、シェルを使用して実行します:

    #!/bin/bash
    xmlfilename=$1
    sep=$(printf '%04x%04x\n' $RANDOM $RANDOM)
    psql <<__END__
    INSERT INTO mytable(myxmlcolumn) VALUES (
    \$x${sep}\$$(cat ${xmlfilename})\$x${sep}\$
    );
    __END__
    

    ランダムセパレーターの生成は、ドル引用符セパレータータグを知っているか推測することに依存する(ありそうもない)インジェクション攻撃から保護するためのものです。

    あなたは多くになるでしょう DBIでPerlのような適切なスクリプト言語とPostgreSQLクライアントライブラリを使用すると、より安全で幸せになります およびDBD::Pg 、Pythonとpsycopg2 またはPgを使用したRuby 些細なことではない仕事のための宝石。シェル内のデータベースでの重要な作業は、苦痛、苦痛、およびコプロセスの過度の使用につながります。




    1. 2つのテーブルの行数の違い

    2. ドキュメントをAzureDataLakeにアップロードし、SSISを使用してデータをエクスポートします

    3. MySQL手順を使用してファイルを削除します

    4. SelectステートメントでSum、Avg、Countを使用する方法-SQL Server/TSQLチュートリアルパート128