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

psqlスクリプトで変数を使用する方法

    まず、2つの文字列を+で連結しようとしています。 演算子ですが、連結のSQL演算子は||です。 、その情報があれば、期待される結果は(機能しない)と考えることができます。 ):

    \set path '''c:\\server\\data\\'''
    COPY paymentMethods (name,regexString) FROM :path || 'paymentMethods.csv' WITH (FORMAT csv, HEADER true);
    COPY priceLevels (name) FROM :path || 'priceLevels.csv' WITH (FORMAT csv, HEADER false);
    

    しかし! COPY コマンドは、式ではなくパスのリテラル文字列を想定しているため、実際にはパスを指定する必要があります。 SELECTのようなコマンドで機能することに注意してください 、INSERTUPDATE 、など。

    その情報では、psqlのみを使用できます Pavelが指摘したように、変数を使用して、文字列をpsqlに連結します。 の変数。良い解決策は、psqlを使用することです の:'var' 変数を文字列としてSQL式に挿入する構文:

    \set path 'c:\\server\\data\\'
    \set paymentMethodsPath :path 'paymentMethods.csv'
    \set priceLevelsPath :path 'priceLevels.csv'
    COPY paymentMethods (name,regexString) FROM :'paymentMethodsPath' WITH (FORMAT csv, HEADER true);
    COPY priceLevels (name) FROM :'priceLevels' WITH (FORMAT csv, HEADER false);
    

    どちらが生成されますか(PostgreSQLのサーバーに送信されます):

    COPY paymentMethods (name,regexString) FROM E'c:\\server\\data\\paymentMethods.csv' WITH (FORMAT csv, HEADER true);
    COPY priceLevels (name) FROM E'c:\\server\\data\\priceLevels.csv' WITH (FORMAT csv, HEADER false);
    

    この:'var' 構文はすべてのpsqlで機能するとは限りません バージョン(これがどのバージョンが導入されたかは今は思い出せません)が、古いバージョンの場合は簡単にドル引用符を使用できます:

    \set path 'c:\\server\\data\\'
    \set paymentMethodsPath :path 'paymentMethods.csv'
    \set priceLevelsPath :path 'priceLevels.csv'
    COPY paymentMethods (name,regexString) FROM $$:paymentMethodsPath$$ WITH (FORMAT csv, HEADER true);
    COPY priceLevels (name) FROM $$:priceLevels$$ WITH (FORMAT csv, HEADER false);
    

    または、一重引用符で囲みます:

    \set path 'c:\\server\\data\\'
    \set paymentMethodsPath 'E''':path'paymentMethods.csv'''
    \set priceLevelsPath 'E''':path'priceLevels.csv'''
    COPY paymentMethods (name,regexString) FROM :paymentMethodsPath WITH (FORMAT csv, HEADER true);
    COPY priceLevels (name) FROM :priceLevels WITH (FORMAT csv, HEADER false);
    

    以上です。



    1. SQL Server(T-SQL)のすべてのデータベースメールメッセージのステータスを確認する

    2. ネイティブ モードでの SQL Reporting Services 2008 の起動が遅い

    3. MAMPMysqlエラー-ログを開くことができませんでした

    4. 共通の属性を持つ連続したレコードのグループを選択しますか?