PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Array string Ruby / Rails ke sisipan PostgreSQL

Untuk sesuatu seperti ini, saya akan mengabaikan kutipan ActiveRecord dan melarikan diri dan langsung ke ActiveRecord::Base.connection.quote .

SQL yang Anda coba dapatkan adalah seperti ini:

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

Anda dapat menggunakan quote untuk mengonversi ' ke '' (perhatikan bahwa SQL menggandakan tanda kutip tunggal untuk menghindarinya) tetapi Anda harus menambahkan tanda kurung yang sesuai di VALUES sendiri. quote koneksi metode juga akan menambahkan tanda kutip tunggal luar.

Sesuatu seperti ini:

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

diikuti oleh:

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

harus melakukan trik dan aman.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django bagaimana menghubungkan kembali setelah DatabaseError:query timeout

  2. lastInsertId tidak berfungsi di Postgresql

  3. kesalahan sintaks pada atau di dekat 'pesanan' di PostgreSQL

  4. migrasi dari sqlite ke postgresql di Django

  5. Kueri berdasarkan koordinat terlalu lama - opsi untuk dioptimalkan?