MS Accessには100行程度あり、各行には添付ファイルが含まれています。 RIでRODBCを使用すると、テーブルにアクセスができますが、MS AccessでそれをRを使用してすべてのMSアクセス添付ファイルをダウンロードする方法
答えて
添付ファイルを実行する方法を私を助けてplzは可能性がどのように添付ファイルにアクセスし、R
でそれらをダウンロードするには考えていることができ、実際に関与する特殊なデータ型ですメタデータ(filenameとfiledata)情報のネストした表したがって、RODBC経由でDML SQL文だけでこのデータにアクセスすることはできませんが、具体的にはDAO SaveToFile()メソッドに接続するCOMインターフェイスを使用できます。
RDCOMClient
パッケージを使用して、アクセスオブジェクトライブラリへのインターフェイスを可能にすることを検討してください。注意:以下のコードを実行するには、.accdbファイルだけでなく、MSAccess.exe(MS Office GUIプログラム)がインストールされている必要があります。次のSQLクエリでは、ColAttachはテーブルの添付ファイルフィールドの名前であり、これらの修飾子は.filesataおよび.filenameを使用する必要があります。 DAOレコードセットのフィールド番号はゼロベースです(したがって、0と1)。複数の添付ファイルについて
library(RDCOMClient)
# INITIALIZING OBJECTS
accApp <- COMCreate("Access.Application")
accApp$OpenCurrentDatabase("C:\\Path\\To\\Database.accdb")
docmd <- accApp[["DoCmd"]]
db <- accApp$CurrentDb()
rst <- db$OpenRecordset("SELECT ColAttach.filedata, ColAttach.filename FROM TblAttach")
while(rst$EOF() == FALSE){
rst$Fields(0)$SaveToFile(paste0("C:\\Path\\To\\Output_", rst$Fields(1)$Value()))
rst$MoveNext()
}
# CLOSING OBJECTS
rst$close()
docmd$CloseDatabase()
accApp$Quit()
# RELEASING RESOURCES
accApp <- db <- docmd <- rst <- NULL
rm(rst, db, accApp)
gc()
、各名とFILEDATAに子レコードをループ値(異なるSQLに気付きます)。ファイルが存在するかどうかを確認して、それに応じてCOMエラーを受け取るようにしてください。
rst <- db$OpenRecordset("SELECT ID, ColAttach FROM TblAttach")
while(rst$EOF() == FALSE){
childRS <- rst[['ColAttach']]$Value()
while(childRS$EOF() == FALSE){
if (file.exists(paste0("C:\\Path\\To\\Output_", childRS[["filename"]]$Value()))) {
unlink(paste0("C:\\Path\\To\\Output_", childRS[["filename"]]$Value()))
}
childRS[["filedata"]]$SaveToFile(paste0("C:\\Path\\To\\Output_",
childRS[["filename"]]$Value()))
childRS$MoveNext()
}
rst$MoveNext()
}
ありがとう、私が検索しただけでした。ただし、フィールドに2つ以上の添付ファイルが含まれている場合は、エラーが発生します。 – user7021605
子レコードセットの別のループを実行する必要があります。 [posted link](https://msdn.microsoft.com/en-us/library/office/ff191852.aspx)に示されているVBAと同じロジック編集された回答を参照してください。回答が助けられた場合は同意し、解決を確認してください。 – Parfait
あなたは最高です!おかげでたくさん:) – user7021605
- 1. サーブレットにアクセスして添付ファイルをダウンロードする方法は?
- 2. Rを使用してOutlook電子メールから添付ファイルをダウンロードする
- 3. Outlookメッセージの添付ファイルをダウンロードして保存するR
- 4. ExchangeでEWSを使用してメールの添付ファイルをダウンロードする方法
- 5. MailKit:MimeMessageからすべての添付ファイルをローカルにダウンロードする方法
- 6. ダウンロード特定の件名のJavaメールを使用してGmailからすべての添付ファイルをダウンロード
- 7. REST APIを使用してOutlook添付ファイルをダウンロードしていますか?
- 8. Pythonを使用して添付ファイル付きのメールを転送する方法
- 9. アクセス参照添付ファイルのコンテンツOutlookを使用してREST API
- 10. Excel VBAを使用してアクセスDBに添付ファイルを追加
- 11. IMAPとphpを使用して特定のフォルダにメールの添付ファイルをダウンロードする方法
- 12. ファイル名にワイルドカードを使用してpythonを使用して電子メールにファイルを添付する方法
- 13. OpenPopを使用して電子メールの添付ファイルを保存する方法
- 14. skpsmtpmessageを使用してplistファイルを正しく添付する方法は?
- 15. ファイルをダウンロードしてすぐに電子メールの添付ファイルとしてエクスポートする方法
- 16. 大量にGmailの添付ファイルをダウンロードする方法
- 17. msアクセス2007を使用してビジュアルベーシックデータベースアプリケーションを作成する方法
- 18. C#アプリケーションでメールを受信して添付ファイルをダウンロードする
- 19. イメージビューを電子メールの添付ファイルとして添付する方法は?
- 20. XElementをC#の添付ファイルとしてSMTPメッセージに添付する方法
- 21. ドロップダウンリストを使用して画像を添付する方法
- 22. PHPを使用してAccessデータベースに添付ファイルを挿入する方法は?
- 23. PEARソープを使用してMime添付ファイルを送信する方法
- 24. Android APIを使用してSMS/MMSメッセージにxmlファイルを添付する方法
- 25. telerikを使用してファイルを添付する方法Rad Asyncメールにアップロード
- 26. Pythonを使用してメール添付ファイルを送信する方法
- 27. OutlookでC#winformアプリケーションを使用して添付ファイルを送信する方法
- 28. Httpを使用してJira 4.4から添付ファイルを削除する方法
- 29. QBO添付可能なクエリAPIを使用して、特定の請求書のすべての添付ファイルの一覧を選択する方法
- 30. Rのファイル名を抽出して使用する方法R
私はこの質問に不公平です。私は長い間、MS Accessを使用していないので、これであなたを助けることはできません。 MSのアクセスフォーラムで尋ねたり、他のスクリプト言語を調べたりするかもしれません。 –
ちょうどコメント:同様のこと(バイナリセルの画像を扱う)を試してみましたが、私が見た場所を思い出すことはありませんでしたが、多くの時間を費やしてRODBCを通してアクセスする方法が見つけられませんでした。あなたの運が私のようなものなら、あなたは別の仕組みを見つける必要があるかもしれません。 – r2evans
私は、RODBCを使用してバイナリデータ(画像やpdfやExcelを含む他のファイル)を照会しています。あなたが勉強できる別の質問があります。 http://stackoverflow.com/questions/39581256/r-help-data-from-odbc-blob-not-matching-return-from-sql-query/39593187#39593187私はこれをMS SQL Serverでのみ行っています。これがAccessでどのように動作するかについてはコメントできません。 – Benjamin