RODBCパッケージを使用してデータフレームをMicrosift Accessデータベースにエクスポートする方法を学習しています。データベースには、データフレームをエクスポートしようとしているテーブルがすでに作成されています。Microsoft AccessデータベースでsqlSaveを使用
クエリ:INSERT INTO "Trip"( "CruiseID"、 "VessName"、 "LOA"、 "HrsePowr"、 "DocNum"、 "PermNum")は、次のエラーメッセージを表示します。 (「、」、「?」、「?」、「?」、「? 、、、、、、)odbcUpdate(チャネル、クエリ、MYDATA、coldata [M、]、試験=試験で エラー:??????で 欠落列 'データ'
データフレームエクスポートしようとしています
trip_3<-dput(trip_3)
structure(list(CruiseID = 201602:201605, `Vessel Name` = structure(c(3L,
4L, 2L, 1L), .Label = c("KATE", "F/V Celtic", "F/V Carolina Capes II",
"Sea Hawk"), class = "factor"), LOA = c(NA, NA, 100L, NA), HrsePowr = c(NA,
NA, 1150L, NA), DocNum = c(NA, NA, 591971L, 1159450L), PermNum = c(NA,
NA, 410146L, 410561L), Captain = structure(c(NA, NA, 2L, 1L), .Label = c("William Hullbig",
"Charlie Quinn"), class = "factor"), GearWid = c(14L, NA, 8L,
15L), CrewSize = c(6L, 6L, 6L, 13L), Grounds = structure(c(NA,
3L, 2L, 1L), .Label = c("CAII ", "NLCA", "MAB"), class = "factor"),
DateBeg = structure(c(1462248000, 1463544000, 1464926400,
1466481600), class = c("POSIXct", "POSIXt"), tzone = ""),
DateEnd = structure(c(NA, NA, NA, 1467172800), class = c("POSIXct",
"POSIXt"), tzone = ""), ProjDesc = structure(c(3L, 4L, 2L,
1L), .Label = c("CAII Survey", "2016 RSA NLCA Survey ", "MAB Survey Leg 1",
"2016 RSA MAB Survey Leg 2"), class = "factor"), Comments = structure(c(3L,
4L, 2L, 1L), .Label = c("survey dredge 9 on port and NB dredge on starboard",
"Survey dredge on Port #8, 14 ft NBD on Stbd.", "MAB Survey Leg 1, dredge 8 on starboard side",
"survey dredge on starboard side, no 9"), class = "factor")), .Names = c("CruiseID",
"Vessel Name", "LOA", "HrsePowr", "DocNum", "PermNum", "Captain",
"GearWid", "CrewSize", "Grounds", "DateBeg", "DateEnd", "ProjDesc",
"Comments"), class = "data.frame", row.names = c(3L, 4L, 2L,
1L))
データフレームを新しいテーブルにエクスポートすると、フィールドVessNameは変更されますが、新しいテーブルにエクスポートすると機能します。私はもともとVessel Nameとして持っていましたが、エクスポートはそれをVesseNameに変換するので、データベースの名前を変更しました。私はデータベースに正しい名前を持っていたいと思います。
tmp <- sqlColumns(db2016, "Trip")
varTypes = as.character(tmp$TYPE_NAME)
[1] "VARCHAR" "VARCHAR" "SMALLINT" "SMALLINT" "INTEGER"
[6] "INTEGER" "VARCHAR" "SMALLINT" "SMALLINT" "VARCHAR"
[11] "DATETIME" "DATETIME" "VARCHAR" "VARCHAR"
names(varTypes) = as.character(tmp$COLUMN_NAME)
CruiseID VessName LOA HrsePowr DocNum
"VARCHAR" "VARCHAR" "SMALLINT" "SMALLINT" "INTEGER"
PermNum Captain GearWid CrewSize Grounds
"INTEGER" "VARCHAR" "SMALLINT" "SMALLINT" "VARCHAR"
DateBeg DateEnd ProjDesc Comments
"DATETIME" "DATETIME" "VARCHAR" "VARCHAR"
colspec<-list(tmp$TYPE_NAME)
[[1]]
[1] "VARCHAR" "VARCHAR" "SMALLINT" "SMALLINT" "INTEGER"
[6] "INTEGER" "VARCHAR" "SMALLINT" "SMALLINT" "VARCHAR"
[11] "DATETIME" "DATETIME" "VARCHAR" "VARCHAR"
私ができる唯一の方法:私はまた、他のポートを読み取り、次のことを試された
db2016<-odbcDriverConnect("db2016",case="nochange")
へのODBC接続を設定したエラーメッセージに対処しようとする
エクスポートするデータを取得することは、データを新しいテーブルに移動させることです。私はエクスポートするいくつかの他のデータフレームを持っており、データベースの関係はすでに定義されているので、新しいテーブルを作成したくないです。
R情報
R version 3.3.1 (2016-06-21)
Platform: i386-w64-mingw32/i386 (32-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] datasets utils stats graphics grDevices methods
[7] base
other attached packages:
[1] xlsx_0.5.7 xlsxjars_0.6.1 rJava_0.9-8
[4] stringr_1.0.0 rgdal_1.1-10 plyr_1.8.4
[7] data.table_1.9.6 gmt_1.2-0 lubridate_1.5.6
[10] maptools_0.8-39 sp_1.2-3 MASS_7.3-45
[13] RODBC_1.3-13 latticeExtra_0.6-28 RColorBrewer_1.1-2
[16] lattice_0.20-33
loaded via a namespace (and not attached):
[1] Rcpp_0.12.5 chron_2.3-47 grid_3.3.1 magrittr_1.5
[5] stringi_1.1.1 tools_3.3.1 foreign_0.8-66
のMicrosoft Access情報:マイクロソフトのOffice Professional Plusを2010年32ビット。
私は私のコードとreranすべてを確認倍増。同様のエラーメッセージが表示されますが、今回はフィールドとプレースホルダの数が一致します。 – user41509