如何解决在已检索的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做|行| 如果row == 0 col_indexes = [] csv_data = [] get_fields.each做| col | col_indexes << row.index(col.name) 结束 其他 csv_row = [] col_indexes.each做| col | #可能对照另一个mysql查询在这里检查值,但这很丑 csv_row << row [col] 结束 csv_data << csv_row 结束 结束 问题是,当我添加csv_data的内容以进行输出时,我不再与原始get_fields查询有任何连接。因此,我似乎无法说“这是否与数据库预期的数据类型相匹配”。 我可以按照同样的方法进行工作,直到回到那个水平,然后再进行类似的查询 get_cleanup = BaseField.find_by_csv_col_name(first_line [col]) 如果get_cleanup.format == row [col] .is_a csv_row << row [col] 其他 #做一些数据清理 结束 但是正如我提到的,这可能意味着get_cleanup运行2000多次。 而不是这样做,是否有办法在原始get_fields结果中搜索名称,然后获取关联的字段? 我尝试搜索“搜索轨道对象”,但一直在获取有关建筑物搜索的结果,而不是在已经存在的对象中进行搜索。 我知道我可以进行array.search,但是在对象api中看不到任何有关搜索的内容。 注意:上面的代码可能并不完美,因为我尚未运行它,只是将其写在脑海中,但希望它能使您了解我要做什么。解决方法
当您填充col_indexes数组而不是存储单个值时,可以存储包含索引和数据类型的哈希。
get_fields.each do |col|
col_info = {:row_index = row.index(col.name),:name=>col.name :format=>col.format}
col_indexes << col_info
end
然后,您可以访问ѭ1中的所有数据
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。