我已经在这里查看了其他几个问题,但它们模糊地相似,但不完全是我正在寻找的。 p>
我尝试做的是导入/"转换"一个* .sql文件,包含8个表,每个表包含大约24列。这个文件实际上是相当扁平的文件,看起来好像以前唯一有效的查询与表之间的共享:id相关联(因此,SELECT * FROM table1,table2 WHERE id =' 1'会拉动所有结果,当时 罚款。
我已经四处寻找,但无法找到一个聪明的方法来做到这一点,所以我现在向Rails专业人员求助。
答案 0 :(得分:1)
我假设您想要的基本上是将您的SQL文件转换为Rails数据库模式文件,而无需手动执行此操作。
执行此操作的一种快速方法是手动执行SQL文件,可能是通过登录数据库并以这种方式加载文件,或者执行类似于in this question所做的事情:
ActiveRecord::Base.connection.execute(IO.read("path/to/file"))
一旦您的.sql文件中定义的架构实际加载到您的数据库中,您将需要按照in this question概述的步骤进行操作:
首先运行rake db:schema:dump
,它将根据数据库的当前状态生成db / schema.rb数据库文件。
从这里,您可以创建一个引用schema.rb文件的db / migrate / 001_original_schema.rb迁移,如下所示:
class OriginalDatabaseMigration < ActiveRecord::Migration
def self.up
# contents of schema.rb here
end
def self.down
# drop all the tables
end
end
答案 1 :(得分:1)
如果我理解你的问题,你需要从.sql文件中填充数据库。我是这样做的:
connection = ActiveRecord::Base.connection
ql = File.read('db/some_sql_file.sql')
statements = sql.split(/;$/)
statements.pop
ActiveRecord::Base.transaction do
statements.each do |statement|
connection.execute(statement)
end
end
将您的sql文件放到db文件夹中。
答案 2 :(得分:0)
我能够做到这一点 - 使用rails dbconsole
.import FILE TABLE Import data from FILE into TABLE
基本上.import ./path/to/file TABLE_NAME
像冠军一样工作。
答案 3 :(得分:0)
我遇到了同样的问题,我刚刚创建了一个脚本并进行了解析 所有添加&#39;执行的SQL句子(&#34;&#39;在开头和&#39;&#34;)&#39;在每一行的末尾。
然后我像往常一样创建了一个新的migartion,并将所有输出粘贴到迁移向上脚本上。这对我行得通。
请注意避免对SQL文件发表任何评论,以便解析更容易。