gpt4 book ai didi

mysql - 将数据从 excel 表存储到 ror 中的 db

转载 作者:行者123 更新时间:2023-11-28 23:19:32 24 4
gpt4 key购买 nike

假设我有一个包含要存储在数据库中的数据的 Excel 工作表。我使用了 roo gem 并成功地从 Excel 工作表中插入了数据。现在我正在尝试验证。假设我的 Excel 工作表为:

s.no  name    age
1 abc 12
2 def qwer
3 asd 23

当我上传这张表时,第 2 行数据被回滚,第 1,3 行数据存储在数据库中。我想做的是,如果发生回滚操作,则不应将剩余的记录存储在 db 中。即,不应存储第 3 行数据,因为第 2 行已回滚。感谢任何帮助。谢谢。

更新:这是我在 Controller 中的代码:

def  fetch_excel_data

ex = Roo::Excel.new("/desktop/abc.xls")
ex.default_sheet = ex.sheets[0]
2.upto(ex.last_row) do |line|
name = ex.cell(line,2)
age = ex.cell(line,ex.last_column)
byebug
@product = Product.create(:name => name,:age => age)
@product.save!
flash[:success] = "data is stored successfully"
end
end

我想回滚整个 Excel 工作表,而不仅仅是记录..有什么办法吗?

最佳答案

如果任何记录无效且不会保存更多记录,您可以中断循环

有点像

CSV.foreach("file.csv", headers: true) do |row|
user = User.new(name: row['name'], age: row['age'])
break unless user.valid?
user.save
end

编辑:

在@Rais 建议的帮助下,你可以做这样的事情

User.transaction do
CSV.foreach("file.csv", headers: true) do |row|
User.create!(name: row['name'], age: row['age'])
end
end

关于mysql - 将数据从 excel 表存储到 ror 中的 db,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42437923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com