如何将“.txt”文件中的数据库备份迁移到我的新 Rails 应用程序?
Posted
技术标签:
【中文标题】如何将“.txt”文件中的数据库备份迁移到我的新 Rails 应用程序?【英文标题】:How to migrate my database backup which is in ".txt" file to my new Rails App? 【发布时间】:2014-11-17 12:11:15 【问题描述】:到目前为止,我是 Rails 的新手。我计划为我的实践开发一个新的 Rails 应用程序。
我有一个.TXT
文件格式的数据库备份,我想在我的新应用程序中使用该数据库。
但是,我不知道如何在我的新 Rails 应用程序中迁移 .TXT
格式的数据库。
【问题讨论】:
所有这些都不是很清楚。 “我在 PLSQL 中的“.TXT”文件中备份了我的数据库。” 这个备份是由 SQL 查询组成的吗?还是 PL/SQL 命令?还是别的什么? 也许您应该向我们展示该文件的一小部分摘录。 “我很困惑如何将该数据库文件迁移到我的新应用程序中。” 您是否正在尝试将您的数据库数据从 RDBMS 服务器 迁移到另一个(即:在主机 A 上运行的实例到在主机 B 上运行的实例)?还是从一个 DB 架构 到另一个(架构 A 到同一主机/实例上的架构 B)? 【参考方案1】:如果这些值用逗号 (,) 分隔,则可以使用 CSV 将它们导入到新的 Rails 数据库中。将您的文件放在 db 下的目录中,在以下示例中,我称为“数据”。 您必须编辑位于您的 db 目录中的文件 seed.rb 并输入如下内容:
require 'csv'
CSV.foreach(Rails.root.join("db/data/<yourfile>.csv"), encoding: "ISO-8859-1", headers: true, col_sep: ";") do |row|
<Your rails model>.find_or_create_by(<attribute1>: row[0], <attribute2>: row[1], <attribute3>: row[2])
end
在“编码”中,您必须输入创建 txt 文件时使用的编码。 “headers”告诉导入器文件的第一行有列名,如果你的文件没有,则设置为 false。 而“col_sep”是文件中每个值之间的分隔符,在我的例子中是分号。
例如,如果您正在导入客户端数据,并且您有一个名为 Client 的模型,其中包含 first_name、last_name 和 client_code 作为属性,您的代码将如下所示:
Client.find_or_create_by(first_name: row[0], last_name: row[1], client_code: row[2])
您的文件必须采用如下格式:
FIRST_NAME、LAST_NAME、CLIENT_CODE 约翰·史密斯,1234 年 琳达,哈特尔,4321
如果你有更多的“列”你会继续放属性和行,像这样:
attribute_n: row[n],
如果您的数据没有逗号分隔,您可以将 TXT 文件导入到 excel 中,然后将包含导入数据的文件另存为 .CSV。
【讨论】:
以上是关于如何将“.txt”文件中的数据库备份迁移到我的新 Rails 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 gitlab 备份迁移到具有最新 gitlab 版本的新服务器