PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Mảng chuỗi Ruby / Rails để chèn PostgreSQL

Đối với những thứ như thế này, tôi sẽ bỏ qua phần trích dẫn và thoát ActiveRecord và chuyển thẳng đến ActiveRecord::Base.connection.quote .

SQL mà bạn đang cố gắng kết thúc là một cái gì đó như thế này:

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

Bạn có thể sử dụng quote để chuyển đổi ' thành '' (lưu ý rằng SQL nhân đôi các dấu ngoặc đơn để thoát khỏi chúng) nhưng bạn sẽ phải tự thêm các dấu ngoặc đơn thích hợp trong các GIÁ TRỊ. quote của kết nối phương thức cũng sẽ thêm các dấu ngoặc kép bên ngoài.

Một cái gì đó như thế này:

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

tiếp theo là:

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

nên thực hiện thủ thuật và an toàn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chèn nhiều hàng bằng một hàm trong PostgreSQL

  2. Tương đương với hàm FOUND_ROWS () trong Postgresql

  3. Trừ hai bản ghi của cùng một cột trong một bảng

  4. Cái nào hiệu quả hơn smallint hoặc ký tự (10)?

  5. Chèn nhiều hàng bằng psycopg2