我有一个Filemaker 12关系数据库的肺癌患者接受手术治疗。由于一个病人可能在一个或多个手术中切除了一个或多个癌症,病人特征/人口统计数据在一个表(病人)中,他们所做的手术在另一个表(治疗)中由PatientID连接,而癌症特征在另一个表(病理)中被PatientID识别,但通过切除癌症的手术表的SurgeryID连接。
我希望将所有“内部连接”数据备份为一个平面文件,其中包含每个不同癌症的记录,以及每个患者的每次手术记录(因此,如果有多个癌症和/或手术,就会有多个相同的患者记录)。
因此,我进口了三个文件表病人,治疗,病理学使用:
con = odbcConnect("LC", uid = "uid", pwd = "pwd")
PatSurg <-sqlQuery(con, paste("SELECT * FROM Patient P INNER JOIN Treatment T ON P.PatientID = T.PatientID"))
PatPath <-sqlQuery(con, paste("SELECT * FROM Patient P INNER JOIN Pathology H ON P.PatientID = H.PatientID"))
Full <- merge(PatSurg, PatPath, by = intersect(names(PatSurg), names(PatPath)))
View(Full)这成功地创建了数据框架(Full),就像我想要保存到一个空的、具有相同列名的Filemaker数据库中的平面文件一样,带有一个表Thoracic。
然后我想试试简单的说明:
sqlSave(con, Full, tablename = "Thoracic")并被退回错误:
sqlSave中的错误(con,Full,tablename = "Thoracic"):表‘Thoracic’已经存在
没有被吓倒,我放下了桌子的名字,重新保存了它:
sqlDrop(con, "Thoracic", errors = FALSE)
sqlSave(con, Full, tablename = "Thoracic")返回一个新错误:
sqlSave中的错误(con,Full,tablename = "Thoracic"):HY000 502 FileMaker (502)中的RODBC失败执行部分:字段数值验证测试失败
然后我想,也许我应该使用sqlQuery命令和INSERT,但不确定如何引用我的R数据框架作为SQL/ODBC的表达式。我试过:
sqlQuery(con, "INSERT INTO Thoracic ", Full)
sqlQuery(con, "INSERT INTO Thoracic VALUES", Full)两人均返回:
错误的if (错误)返回(odbcGetErrMsg(通道))其他返回(不可见(Stat)):参数不能解释为逻辑附加:警告消息:在if (错误)返回(odbcGetErrMsg(通道))其他返回(不可见(Stat)):条件的长度>1,只有第一个元素将被使用
sqlAppendTable(con, "Thoracic", Full)返回:
错误(函数(类、fdef、mtable):无法为函数‘sqlAppendTable’找到用于签名‘RODBC’的继承方法
sqlQuery(con, "INSERT INTO Thoracic VALUES Full")返回:
1 "42000 8310 FileMaker Full 0001/(1:29):查询语法有错误。“2 "RODBC错误:无法SQLExecDirect‘插入胸值Full'”
如何在SQL查询中引用我的R数据框架"Full“。我看到的所有问题只与将数据从OBDC源导入到数据框架有关。这是最简单的一点!
发布于 2017-09-07 12:04:03
我找到了明显的解决办法
我安装了WriteXLS并将数据帧导出到XLSX文件,然后使用第一行作为列名导入:
install.packages("WriteXLS")
library(WriteXLS)
WriteXLS(Full, "SQL Backup.xlsx")然后使用Filemaker的导入功能。包含某些字符的自由文本存在一些问题,所有日期都以yyyy格式返回,而不考虑原始格式。主要问题是,如果空闲文本包含分隔符,则可能会出现行内右帧移位,因此应该是最后一列。我刚刚更正了XLSX文件中的内容,并在PatientID、SurgeryID和DiagnosisID的基础上重新导入更新。
Addit:实际上,我发现导出作为.csv可以纠正这些小问题。
https://stackoverflow.com/questions/46076542
复制相似问题