私はSQL Server 2012のデータベースにRからdata.tableを挿入しよう:アップロード - エラー "文字列データ、右切り捨て" はnvarchar対列タイプのCHR(50)
library(data.table)
library(odbc)
library(dplyr)
upload.data <- data.table(readxl::read_excel(path = uploadfile.file, sheet =
sheet_no, skip = skip_rows), col_names = TRUE)
odbcChannel <- dbConnect(odbc::odbc(), "SQL")
dbWriteTable(odbcChannel, "Table_Name", upload.data, append = TRUE, overwrite = FALSE, row.names=FALSE, encoding = "latin1")
データテーブルの列は、chr型です。 SQL Serverのターゲットテーブルの列は、varchar(50)
です。
私の理解では、chrはvarchar(255)
としてアップロードされます。このため、私はエラーが発生します:
Error in result_insert_dataframe([email protected], values) :
nanodbc/nanodbc.cpp:1587: 22001: [Microsoft][ODBC SQL Server Driver]String data, right truncation
データベースのテーブルの特定のニーズに合わせてRの列を変更するにはどうすればよいですか?
データベーステーブルに収まらないコンテンツが列にある場合は、情報がなくなることを望みます。
一つの解決策:サーバーに新しいテーブルにデータテーブルをアップロードして一致させるタイプの編集より:この後
dbSendStatement(odbcChannel,"ALTER TABLE Table_Name
ALTER COLUMN Batch_Name Nvarchar(50)")
私は、ターゲット表にデータを挿入することができます。しかし、これは特に、データベース内のすべての列が異なる型を持つ場合は、かなり複雑に思えます。私はこの問題の解決策を見つけた
敬具と感謝、
HP