我有一個Filemaker Pro 12關係數據庫,用於接受手術治療的肺癌患者。由於一名患者可能在一次或多次手術中切除了一個或多個癌症等,因此患者特徵/人口統計數據在一張表格(患者)中,他們手術的患者在另一張表格(治療)中,患者ID和癌症特徵在由PatientID確定的另一個表格(病理學)中,但是通過手術表的SurgeryID與癌症被去除相關聯。無法使用SQL和ODBC連接將R數據幀保存到filemaker Pro數據庫
我想將所有「內部加入」數據備份爲一個平面文件,每個不同癌症的記錄以及每位患者的每項手術(因此如果患者有多個癌症和/或操作)。
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)
這成功地創建的數據幀(全部)完全一樣的平坦平面文件我想保存到一個空的現有的Filemaker:
我已經使用因此進口3個的Filemaker表病人,治療,病理學Pro數據庫與表胸相同的列名稱。
我當時想我會嘗試簡單的指令:
sqlSave(con, Full, tablename = "Thoracic")
,並返回錯誤:
Error in sqlSave(con, Full, tablename = "Thoracic") : table ‘Thoracic’ already exists
氣餒,我放棄了表名,並重新保存它:
sqlDrop(con, "Thoracic", errors = FALSE)
sqlSave(con, Full, tablename = "Thoracic")
其中返回了一個新的錯誤:
Error in sqlSave(con, Full, tablename = "Thoracic") : [RODBC] Failed exec in Update HY000 502 [FileMaker][FileMaker] (502): Field failed numeric value validation test
然後我想,也許我應該使用sqlQuery命令和INSERT,但不知道如何在SQL/ODBC表達式時引用我的R數據框。我想:
sqlQuery(con, "INSERT INTO Thoracic ", Full)
sqlQuery(con, "INSERT INTO Thoracic VALUES", Full)
兩個返回:
Error in if (errors) return(odbcGetErrMsg(channel)) else return(invisible(stat)) : argument is not interpretable as logical In addition: Warning message: In if (errors) return(odbcGetErrMsg(channel)) else return(invisible(stat)) : the condition has length > 1 and only the first element will be used
sqlAppendTable(con, "Thoracic", Full)
返回:
Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘sqlAppendTable’ for signature ‘"RODBC"’
sqlQuery(con, "INSERT INTO Thoracic VALUES Full")
返回:
[1] "42000 8310 [FileMaker][FileMaker] FQL0001/(1:29): There is an error in the syntax of the query." [2] "[RODBC] ERROR: Could not SQLExecDirect 'INSERT INTO Thoracic VALUES Full'"
我應該如何在SQL查詢中引用我的R數據框「Full」。我所看到的所有問題都只涉及將數據從OBDC源導入數據框。這是最簡單的一點!