PG :: TextEncoder :: Массив для массовой вставки? - PullRequest
0 голосов
/ 24 января 2019

Мне нужно сделать несколько массовых вставок для PostgreSQL в ruby. Я могу построить ruby array, но я не уверен, как перейти к sql syntax. Я могу создать его синтаксически, однако мне нужно избежать некоторых вставок, которые мешают моей цитате, особенно когда она заключена в одинарные кавычки в системе двойных кавычек для string interpolation.

Я споткнулся о PG gem, так как думаю, что раньше как-то использовал это, но не помню. Могу ли я передать ruby array на PG::TextEncoder::Array и использовать его вместо этого? Я беспокоюсь, что значения полей не будут должным образом экранированы.

Отредактировано: найдено полурешение

enco = PG::TextEncoder::CopyRow.new
conn.copy_data "COPY my_table FROM STDIN", enco do
  conn.put_copy_data ['some', 'data', 'to', 'copy']
  conn.put_copy_data ['more', 'data', 'to', 'copy']
end

Я должен пройти через array элементов и пропустить каждый внутренний элемент array через структуру, показанную выше. Это не полное подчинение решению, но оно приводит меня туда.

...