我在oci8插入语句中使用变量很困难。
CSV.foreach('C:/csv_test.csv') do |row|
gender = row[0]
name = row[1]
year = row[2]
command = 'INSERT INTO CSV_TEST VALUES('+gender+','+name+','+year+')'
conn.exec(command)
end
我确保一切正常。性别,名称和年份包含我的数据,插入工作正常。但是我不能在insert语句中调用gender,name和year变量。 我收到的错误是:
column not allowed here
任何帮助将不胜感激。 提前谢谢。
答案 0 :(得分:1)
最安全的方法是使用bindvariables。这将消除任何逃避错误和安全漏洞。
Oracle有一个decent ruby tutorial用于处理ruby。不幸的是我没有安装Oracle,所以我无法测试这个。我猜测以下内容会起作用:
cursor = conn.parse('INSERT INTO CSV_TEST VALUES(:gender,:name,:year)')
cursor.bind_param(1,String)
cursor.bind_param(2,String)
cursor.bind_param(3,Fixnum)
CSV.foreach('C:/csv_test.csv') do |row|
gender = row[0]
name = row[1]
year = row[2]
cursor[1] = gender
cursor[2] = name
cursor[3] = year.to_i
cursor.exec
end