Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql RubyonRails在一个模型中包含多个表_Sql_Ruby On Rails_Ruby_Rails Models - Fatal编程技术网

Sql RubyonRails在一个模型中包含多个表

Sql RubyonRails在一个模型中包含多个表,sql,ruby-on-rails,ruby,rails-models,Sql,Ruby On Rails,Ruby,Rails Models,我正在使用RubyonRails,我必须创建一个从一个数据库到另一个数据库的导入器。每个数据库中有100多个表,我不想为每个表创建一个模型。是否可以创建查询,指定表名?我不希望模型绑定到表 例如:FirstDatabase。从“某些表”中选择“*”。其中 没有设置\u表\u名称。。。只是动态模型 另外,我需要在不同的表中插入数据,我根本不会使用模型来完成这项任务。而是根据需要使用基本连接的select_all、exec_insert、exec_update和exec_delete方法 Activ

我正在使用RubyonRails,我必须创建一个从一个数据库到另一个数据库的导入器。每个数据库中有100多个表,我不想为每个表创建一个模型。是否可以创建查询,指定表名?我不希望模型绑定到表

例如:FirstDatabase。从“某些表”中选择“*”。其中

没有设置\u表\u名称。。。只是动态模型


另外,我需要在不同的表中插入数据,我根本不会使用模型来完成这项任务。而是根据需要使用基本连接的select_all、exec_insert、exec_update和exec_delete方法

ActiveRecord::Base.connection.select_all("select * from #{table_name}")
返回行的哈希数组

ActiveRecord::Base.connection.exec_insert("insert into #{table} (foo, bar) values(#{foo}, #{bar})
插入一行。对于您正在使用的任何数据库,这些值都需要正确转义字符串、日期等

ActiveRecord::Base.connection.quote("fo'o")
=> "'fo''o'"  # When server is PostgreSQL
返回适合在SQL语句中使用的带引号的字符串表示形式

now=Time.now
=> Fri Aug 23 02:24:40 -0700 2013

ActiveRecord::Base.connection.quote(now)
=> "'2013-08-23 09:24:40.365843'"
返回UTC时区中引用的日期/时间表示形式

要处理多个数据库,您可以为每个数据库设置一个模型,然后从这些模型而不是从ActiveRecord::Base获取连接

class TableInDbA << ActiveRecord::Base
  establish_connection "database_a_#{Rails.env}"
end

class TableInDbB << ActiveRecord::Base
  establish_connection "database_b_#{Rails.env}"
end

TableInDbA.connection.select_all("...

我根本不会使用模型来完成这项任务。而是根据需要使用基本连接的select_all、exec_insert、exec_update和exec_delete方法

ActiveRecord::Base.connection.select_all("select * from #{table_name}")
返回行的哈希数组

ActiveRecord::Base.connection.exec_insert("insert into #{table} (foo, bar) values(#{foo}, #{bar})
插入一行。对于您正在使用的任何数据库,这些值都需要正确转义字符串、日期等

ActiveRecord::Base.connection.quote("fo'o")
=> "'fo''o'"  # When server is PostgreSQL
返回适合在SQL语句中使用的带引号的字符串表示形式

now=Time.now
=> Fri Aug 23 02:24:40 -0700 2013

ActiveRecord::Base.connection.quote(now)
=> "'2013-08-23 09:24:40.365843'"
返回UTC时区中引用的日期/时间表示形式

要处理多个数据库,您可以为每个数据库设置一个模型,然后从这些模型而不是从ActiveRecord::Base获取连接

class TableInDbA << ActiveRecord::Base
  establish_connection "database_a_#{Rails.env}"
end

class TableInDbB << ActiveRecord::Base
  establish_connection "database_b_#{Rails.env}"
end

TableInDbA.connection.select_all("...

您需要使用rails吗?从外部看可能更容易我们使用rails是因为多线程,您需要使用rails吗?从外部看可能更容易我们使用rails,因为多线程。这太棒了!我不知道我能做到这一点。请注意,对于更长、更复杂的SQL字符串(包括UNION语句),您可以使用%Q构建多行字符串。这太棒了!我不知道我能做到这一点。请注意,对于更长、更复杂的SQL字符串(包括UNION语句),可以使用%Q构建多行字符串。