SQLを実行するRのようなアプリケーション層のパラメータ化のプログラミング業界標準を検討してください。このアプローチを使用すると、文字列補間や面倒な引用符の囲い込みの必要性を回避できます。 RのDBI標準にはいくつかの方法があり、そのうちの1つは sqlInterpolate
:
# PREPARED STATEMENT (NO DATA) QMARKS REQUIRED BUT NAMES CAN CHANGE
sql <- "INSERT INTO trade_data (Col1, Col2, Col3, col4)
VALUES (?param1, ?param2, ?param3, ?param4)"
ch <- DBI::dbConnect(MySQL())
dbSendQuery(ch, 'set character set "utf8"')
dbSendQuery(ch, 'SET NAMES utf8')
for (i in 1:nrow(test)) {
# BIND PARAMS
query <- sqlInterpolate(conn, sql, param1 = "0", param2 = test[i, 1],
param3 = test[i, 2], param4 = test[i, 3])
# EXECUTE QUERY
dbSendQuery(ch, query)
}