2017-09-23 3 views
0

複数の列が255文字を超えるデータフレームがあります。以下のコードを使用してSQL Serverにデータフレームをインポートしようとすると、複数の列が255文字に切り捨てられます。私が試したが、うまくいきませんでしたsqlSave()を使用してRバイトから255バイトに切り捨てられたカラムをRからSQLサーバにインポートしていますか?

myconn <- odbcDriverConnect("db_name") 
sqlSave(myconn, my_data, tablename = "Table_1" ,rownames=FALSE, append = TRUE) 

もの:

私はRからデータをインポートする前に、SQLでテーブルを作成しようとしましたが、それはうまくいきませんでした:

CREATE TABLE TEST_Table 
(
     [Column_1] nvarchar(max), 
     [Column_2] nvarchar(max), 
     [Column_3] nvarchar(max) 
); 

また、データをインポートする前にvarTypesを次のように指定しようとしました:

columnTypes <- list(Column_1 = "nvarchar(max)", Column_2 = "nvarchar(max)", Column_3 = "nvarchar(max)") 
sqlSave(myconn, my_data, tablename = "Table_1" ,rownames=FALSE, append = TRUE, varTypes=columnTypes) 

このデータフレームを文字列を切り捨てずにデータベースにテーブルとして書き込むには、他に何ができますか?

+0

である私はSQLにRからデータをプッシュする持っていた唯一の成功は、十分なSQL文字列で巨大な 'INSERT'ステートメントを構築することによりでした。 – lebelinoz

+0

@ lebelinoz-あなたはINSERT文の構文や例を提供できますか?それは私には新しく、試してみる価値があります。ありがとう。 – Curious

+0

私はそれを以下の答えとしてお伝えしますが、必要なものかどうかはわかりません。 – lebelinoz

答えて

1

代替ソリューションは

library (RODBCext) 
channel <- odbcConnect (...) 

sqlExecute (channel, 
      "INSERT INTO Table_1 
      (Column_1, Column_2, Column_3) 
      VALUES (?,?,?)", 
      data = df [c ("Column_1", "Column_2", "Column_3")]) 
+0

@ Benjamin-これは実際に働いた!どうも。 – Curious

0

RからSQLにデータをプッシュした唯一の成功は、巨大なSQL文字列で巨大なINSERT文を構築することでした。だから、と仮定すると、私は私のデータベースにすでにTable_1を持っていたし、私はその後、私は

sql = "INSERT Table_1 (Column_1, Column_2, Column_3) 
     VALUES ('Fred', 'Wilma', 'Pebbles'), ('Barney', 'Betty', 'Bambam')" 

のようにRでsql文字列を作成し、上のことを実行したい

Column_1 Column_2 Column_3 
-------------------------------- 
Fred  Wilma  Pebbles 
Barney Betty  Bambam 

のような簡単なデータフレームdfを挿入したいですRODBC接続。

関連する問題