Переопределить multi_insert_sql_strategy, используемую в Sequel multi_insert

#ruby #odbc #snowflake-cloud-data-platform #sequel

#ruby #odbc #snowflake-cloud-data-platform #продолжение

Вопрос:

Есть ли способ переопределить multi_insert_sql_strategy то, что указано при использовании таких методов, как multi_insert ? Я использую адаптер ODBC, который возвращается в :separate качестве стратегии. База данных, к которой я подключаюсь (Snowflake), поддерживает несколько строк в VALUES предложении, и поэтому я хотел бы использовать :values ее в качестве стратегии. Я не нашел, что это вариант, который я могу передать.

Стратегия по умолчанию: https://github.com/jeremyevans/sequel/blob/9202d780b92626646c9faeff90a7f7b9d7b6c10d/lib/sequel/dataset/sql.rb#L1340

multi_insert код: https://github.com/jeremyevans/sequel/blob/ff5d77cb60a61b41d3eb500344f287f0b9fbdb97/lib/sequel/dataset/actions.rb#L484

Доступные опции, для import которых используется multi_insert : https://www.rubydoc.info/github/jeremyevans/sequel/Sequel/Dataset:import

Ответ №1:

Да, вы можете переопределить стратегию:

 DB.extend_datasets do
  def multi_insert_sql_strategy; :values; end
end
  

В общем, вы можете рассмотреть возможность работы над адаптером Sequel для Snowflake, поскольку предполагается, что об этом позаботится адаптер.