通过 Rails 将 SQL 文件或 Excel 文件中的数据导入数据库 [关闭]
Posted
技术标签:
【中文标题】通过 Rails 将 SQL 文件或 Excel 文件中的数据导入数据库 [关闭]【英文标题】:Import Data from SQL file or Excel file into database via Rails [closed] 【发布时间】:2012-05-11 18:08:23 【问题描述】:我有来自 Excel 电子表格的数据,我想通过 Rails 导入数据库。我正在使用 Rails 3.2.3 和 Ruby 1.9.2。
数据为用户名和密码,文件名为member.xlsx
。
<%= form_for @member do |f| %>
<%= f.text_field :import,
:maxlength=>'50',
:style=>'width: 250px;',
:placeholder => 'browse file *.sql or *.xlsx' %>
<%= f.submit %><% end %>
我的桌子:
create_table :members do |t|
t.string :username
t.string :password_hash
t.string :password_salt
解决了
解决方案
我正在使用电子表格 gem 来解析 Excel 文件,并使用 CarrierWave gem 来上传 Excel 文件。因为我正在为用户使用设计模型,所以这是用于导入文件的控制器的样子
def import
if params[:excel_file].nil?
redirect_to user_new_import_path, :flash => :error => 'You have not selected a file'
else
test_file = params[:excel_file]
file = ExcelUploader.new
file.store!(test_file)
book = Spreadsheet.open "#file.store_path"
sheet1 = book.worksheet 0
sheet1.each 1 do |row|
name = row[0]
email = row[2]
generated_password = Devise.friendly_token.first(6)
temp_password = generated_password
@user = User.create(:name => name, :email => email, :password => temp_password, :password_confirmation => temp_password)
UserMailer.password_send(@user).deliver
end
if @user.save
redirect_to users_path, :notice => "success"
else
redirect_to new_import_user_path, :flash => :error => 'error. try again'
end
end
end
【问题讨论】:
"你能给我一些代码来告诉我最好的方法吗?"。不,这不是 SO 的用途。先试一试,如果不起作用,再提出更具体的问题。 欢迎来到 ***!请记住为所有有用的答案投票。包括回答别人的问题。并接受/检查您自己问题的最佳答案。 【参考方案1】:导入 sql 文件是一个可怕的想法,因为 sql 可以对您的数据库做任何事情。
导入 Excel 文件可以正常工作。有 Excel gems 可以读取数据。 roo gem 可用于 xlsx 格式,但我尚未对其进行测试。我告诉用户使用 Excel 以 xls 格式存储文件,然后他们上传。
更好的(从应用程序开发人员的角度来看)是导入 csv 文件。 csv 的缺点是该文件仅包含一个表。
另一方面,Excel 导入的一个问题是人们可以为您提供多个选项卡文件、公式而不是单元格中的值等。因此请确保包含大量错误检查。
常见问题:当您的代码需要 Date 对象时,人们在 Excel 工作表中将日期作为字符串输入。或者人们作为字符串输入的数字。您的代码应该测试并处理这些问题。
见http://rubygems.org/gems/roo
Re:“给我一些代码”——这不是 *** 的工作方式。希望以上内容对您的旅程有所帮助。
【讨论】:
我需要后端,通过后端备份和恢复数据,并不可怕。 对于后端、备份和恢复类型的方法,建议使用 rake 任务。对于sql输入,可以使用SQL execute method以上是关于通过 Rails 将 SQL 文件或 Excel 文件中的数据导入数据库 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章