2017-09-06 10 views
0

私は、手術のために治療された肺癌患者のFilemaker Pro 12リレーショナルデータベースを持っています。 1人の患者が1つ以上の手術で取り除かれた1つ以上の癌を有することがあるので、患者の特徴/人口統計は1つのテーブル(患者)にあり、それらの手術は患者IDと癌によってリンクされた別のテーブル特性はPatientIDによって識別されるが、がんが除去された手術テーブルのSurgeryIDを介してリンクされた別のテーブル(病理学)にある。SQLデータとODBC接続を使用してRデータフレームをfilemaker Proデータベースに保存できません

私はすべての「がんばっている」データをフラットファイルとしてバックアップしたいと思います。オペレーション)。

私はそのための処置が使用して、患者の病理を3つのFileMakerテーブルをインポートしています

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) 

これが正常まさに私が空の既存のファイルメーカーに保存するフラットフラットファイルとしてデータフレーム(フル)を作成しましたProデータベースと同一のカラム名を持つテーブルThoracic。

私は、私は、単純な命令試してみようと思いました:

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データフレームを「フル」に参照する方法私が見たすべての質問は、OBDCソースからデータフレームへのデータのインポートにのみ関連しています。それは最も簡単なビットです!

答えて

0

Iは明白な回避策

IがインストールされているWriteXLSを発見し、XLSXファイルにデータフレームをエクスポートし、その後、単にカラム名として最初の行使用してインポート:

install.packages("WriteXLS") 
library(WriteXLS) 
WriteXLS(Full, "SQL Backup.xlsx") 

をインポートを次に使用Filemaker Proの機能 フリーテキストに特定の文字が含まれていて、元の形式にかかわらずすべての日付がyyyy-mm-ddの形式で返される問題がありました。 フリーテキストにセパレータが含まれている場合は、行内の右フレームシフトが存在する可能性があるという主な問題がありました。そのため、最後の列にする必要があります。 XLSXファイルのものを修正し、PatientID、SurgeryID、DiagnosisIDに基づいてアップデートとして再インポートしました。

Addit:実際には、私は.csvとしてエクスポートすると、これらの小さな問題を修正することが分かりました。

関連する問題