短い要約
パッケージを使用して、R data.frame から SQLServer データベースのテーブルにデータを挿入しようとしていDBI
ます。sqlAppendTable に関する情報を読んだ後、この関数が必要な SQL ステートメントの生成に役立つことを期待していました。ただし、この関数は文字変数の前後に文字列を配置しないようで、実行しようとするとエラーが発生します。私はそれを正しく使用していますか?この目的のためにこの関数を使用する必要がありますか? そうでない場合は、別のアプローチをお勧めできますか?
私のコード
library(odbc)
library(DBI)
con <- dbConnect(
odbc::odbc(),
dsn = myDsn,
UID = myLogin,
PWD = myPwd,
Port = 1433,
encoding = "latin1"
)
insertStatement <- sqlAppendTable(
con,
"DBtable",
myDataFrame,
row.names = FALSE
)
dbExecute(
con,
insertStatement
)
dbDisconnect(con)
データベース テーブル「DBtable」には 3 つの列があり、それぞれの型はvarchar
です。data.frame "myDataFrame" にもcharacter
、同じ名前で同じ順序の型の 3 つの列があります。
問題
sqlAppendTable
文字変数が引用符で囲まれていない SQL ステートメント、つまり次の形式の出力を生成します。
<SQL> INSERT INTO "DBtable"
("col1", "col2", "col3")
VALUES
(Value one one, Value one two, Value one three),
(Value two one, Value two two, Value two three),
etc.
この出力をdbExecute
ステートメントで使用すると、値が引用符で囲まれていないため、エラーが発生しValue one one, ...
ます'Value one one', ...
。
私の質問
- この関数を取得して文字変数を引用符で囲む方法はありますか? もしそうなら、どのように?
- この機能をこの目的で使用できますか? (情報は、それが何を意味するにせよ、「主にバックエンドの実装者に役立つ」と述べています。)
- できない場合、使用できる別の機能はありますか?
paste
(または同様の関数)を使用してカスタムメイドのステートメントを作成することは避けたいと思います。これは、面倒でエラーが発生しやすく、異なるテーブルに簡単に複製できないためです。