Sql 正在寻找一种从要插入的数组散列中获取的巧妙方法
我有一些例程,它们将数据刮到大小相等的数组的散列中,每个数组最终都对应于一个数据库列,其名称对应于键Sql 正在寻找一种从要插入的数组散列中获取的巧妙方法,sql,arrays,ruby,hash,Sql,Arrays,Ruby,Hash,我有一些例程,它们将数据刮到大小相等的数组的散列中,每个数组最终都对应于一个数据库列,其名称对应于键 test_hash = { a: [1,2,3], b: [4,5,6], c: [7,8,9] } 我需要插入到SQLITE3数据库中,因此我需要迭代以下内容(本例中为3次) 我只需花点时间就能拿到钥匙 test_hash.keys 但我无法在块内获取可见的索引,以获取值 3.times do |n| test_hash.collect { |x| x.last[n] }
test_hash = {
a: [1,2,3],
b: [4,5,6],
c: [7,8,9]
}
我需要插入到SQLITE3数据库中,因此我需要迭代以下内容(本例中为3次)
我只需花点时间就能拿到钥匙
test_hash.keys
但我无法在块内获取可见的索引,以获取值
3.times do |n|
test_hash.collect { |x| x.last[n] }
end
我注意到,当作为x推入块时,散列条目被映射到由两个元素组成的数组。第一个元素是散列的键,第二个元素是数组的键,因此是.last。对于记录,如果我在块中用0、1或2替换n,我将得到我正在寻找的适当格式行
我可以看到一些类似于数据表的应用程序也能够做到这一点。这里的方法是什么
谢谢 我会将转换用于输入,然后对其进行迭代:
test_hash = {
a: [1,2,3],
b: [4,5,6],
c: [7,8,9]
}
attributes = test_hash.values.transpose
#=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
attributes.each do |attrs|
# method to build the SQL insert statement with `attrs` as arguments
end
简单!谢谢,斯皮克曼。我没有想到转置法,因为我的大脑有杂凑。
test_hash = {
a: [1,2,3],
b: [4,5,6],
c: [7,8,9]
}
attributes = test_hash.values.transpose
#=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
attributes.each do |attrs|
# method to build the SQL insert statement with `attrs` as arguments
end