mysql 从结果中搜索_在已经检索到的mysql结果中搜索

我试图限制我执行mysql查询的次数,因为这可能最终成为2k查询只是为了完成一个相当小的结果 .

我正在浏览一个CSV文件,我需要检查csv中内容的格式是否与db期望的格式相匹配,有时我会尝试完成一些基本的清理(例如,我有一个字段,是一个字符串,但有时在csv中为jb2003-343,我需要删除-343) .

我做的第一件事是从数据库中获取我需要从csv中检索的字段列表,然后我在csv中获取这些列的索引,然后我遍历csv中的每一行并获取每个索引列

get_fields = BaseField.find_by_group(:all, :conditions=>['group IN (?)',params[:group_ids]])

csv = CSV.read(csv.path)

first_line=csv.first

first_line.split(',')

csv.each_with_index do |row|

if row==0

col_indexes=[]

csv_data=[]

get_fields.each do |col|

col_indexes << row.index(col.name)

end

else

csv_row=[]

col_indexes.each do |col|

#possibly check the value here against another mysql query but that's ugly

csv_row << row[col]

end

csv_data << csv_row

end

end

问题是,当我为输出添加csv_data的内容时,我不再与原始get_fields查询有任何连接 . 因此,我似乎无法说'这与db预期的数据类型相匹配' .

我可以通过同样的过程重新开始,让我达到那个级别,然后再做这样的查询

get_cleanup = BaseField.find_by_csv_col_name(first_line[col])

if get_cleanup.format==row[col].is_a

csv_row << row[col]

else

# do some data clean-up

end

但正如我所提到的,这可能意味着get_cleanup运行了2000次 .

而不是这样做,有没有办法在原始的get_fields结果中搜索名称,然后获取相关的字段?

我尝试搜索“搜索rails对象”,但不断获取有关构建搜索的结果,而不是在已有的对象中搜索 .

我知道我可以做array.search,但是在关于搜索的对象api中没有看到任何内容 .

注意:上面的代码可能不完美,因为我还没有运行它,只是写下了我的头脑,但希望它能让你了解我的目标 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值