sql >> Database >  >> RDS >> PostgreSQL

Ruby/Rails array van strings naar PostgreSQL insert

Voor zoiets als dit zou ik de ActiveRecord-citaten en escape-dingen negeren en rechtstreeks naar ActiveRecord::Base.connection.quote gaan .

De SQL waarmee je probeert te eindigen is ongeveer als volgt:

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

U kunt quote . gebruiken om ' . te converteren naar '' (merk op dat SQL enkele aanhalingstekens verdubbelt om eraan te ontsnappen) maar u zult zelf de juiste haakjes in de WAARDEN moeten toevoegen. Het quote van de connectie methode zal ook de buitenste enkele aanhalingstekens toevoegen.

Zoiets als dit:

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

gevolgd door:

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

zou het lukken en veilig zijn.




  1. Gegevens samenvoegen in twee bestemmingstabellen

  2. APEX:Omleiden na inloggen naar een pagina met argumenten

  3. MySQL IF/CASE-syntaxis die verschillende SELECT-instructies aanroept

  4. Essentiële PostgreSQL-bewaking - deel 2