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

Ruby/Railsの文字列配列をPostgreSQLに挿入

    このような場合は、ActiveRecordの引用とエスケープを無視して、ActiveRecord::Base.connection.quoteに直接移動します。 。

    最終的に作成しようとしているSQLは次のようなものです:

    INSERT INTO TABLE (column)
    SELECT column FROM TABLE
    UNION VALUES ('example one''s value'), ('example (2) value')
    EXCEPT SELECT column FROM TABLE
    

    quoteを使用できます 'を変換するには ''へ (SQLは一重引用符を二重にしてエスケープすることに注意してください)が、VALUESに適切な括弧を自分で追加する必要があります。接続のquote メソッドは、外側の一重引用符も追加します。

    このようなもの:

    values = array_of_strings.map { |s| "(#{ActiveRecord::Base.connection.quote(s)})" }.join(',')
    

    続いて:

    sql = %Q{
        INSERT INTO TABLE (column)
        SELECT column FROM TABLE
        UNION VALUES #{values}
        EXCEPT SELECT column FROM TABLE
    }
    

    トリックを実行し、安全である必要があります。




    1. Postgresqlで整数をインクリメントするためのAtomicUPDATE

    2. MySQLユーザー管理

    3. MySQLエラー2026-SSL接続エラー-Ubuntu20.04

    4. 単一のDjangoモデル、複数のテーブル?