web-dev-qa-db-ja.com

Microsoft Access .accdbデータベースファイルからRにデータを読み込む方法は?

[〜#〜] rodbc [〜#〜] ドキュメントはそれが可能であることを示唆していますが、Microsoft Access(新しい.accdb形式)ファイルからデータを読み取る方法がわかりません。このパッケージをRに(Debian GNU/Linux上で)。ビネットはドライバーについて説明していますが、インストールされているドライバーを確認する方法がよくわかりません。特に、それらの.accdbファイルにアクセスするためのドライバーがインストールされているかどうかはわかりません。

.accdbファイルからデータを読み取るためにどのコードを使用しますか?また、使用しているプラ​​ットフォームと、特別なドライバーをインストールする必要があるかどうかを示してください。

16

リンクしたページのタイトルRODBC:ODBCデータベースアクセス、誤解を招く可能性があります。アクセスは意味しませんMS Access;そのタイトルでは、アクセスは接続を意味します。RODBCはRのODBCマネージャーです。RとODBCドライバー)の間の通信を提供するメディエーターとして機能します。ターゲットデータベースの場合。したがって、GNU/Linuxの場合でも、MSAccessデータベースファイル用のODBCドライバーが必要です... RODBCは提供していません。

ただし、無料の(自由やビールなどの)MS Access ODBC Linux用ドライバー。Easysoftは one を販売していますが、安くはありません) 。他のベンダーからの提供もあるかもしれません;私は見ていません。

Windowsマシンを使用して、ACCDBをRが使用できる形式にエクスポートする方が簡単な場合があります。または、Linuxの代わりに WindowsではR を実行します。

4
HansUp

2007年以降のMicrosoftAccessファイル(.accdb)をRにインポートするには、RODBCパッケージを使用できます。

John Doeのコンピューターのデスクトップに保存されている、「bar」と「bin」のテーブルを持つ「foo.accdb」という.accdbファイルの場合:

library(RODBC)    #loads the RODBC package
dta <- odbcConnectAccess2007("C:/Users/JohnDoe/Desktop/foo.accdb")   #specifies the file path
df1 <- sqlFetch(dta, "bar")   #loads the table called 'bar' in the original Access file
df2 <- sqlFetch(dta, "bin")   #loads the table called 'bin' in the original Access file
7
coip

AccessをODBCインターフェイスに接続するには、ドライバが必要です。Accessがインストールされている場合は、これらがシステム上にあるはずです。インストールされていない場合は、 Accessデータベースエンジン をダウンロードしてください。次に、Microsoftからデータ接続を作成しますODBC(64ビットWindowsを実行している場合は32ビット_c:\windows\sysWOW64\odbcad32.exe_を実行する必要がある場合があります)。この方法は機能しないことに注意してください。 GNU/Linux上。以下の@HansUpで説明されているように、ランタイムはWindowsのみです。

コードに関しては、おそらくodbcConnect(dsn, uid = "", pwd = "", ...)から始めるでしょう、そしてドキュメントは詳細を助けることができます。

3
Patrick

ODBCは、さまざまなブリックを接続する「プラグアンドプレイ」システムです。

RODBCを使用すると、ODBCプロバイダーからRに何かを取得できます。まだ必要なのは、問題のデータベースシステムの(より優れたWordがないため)ODBCエクスポートドライバーです。これが必要です。あなたのOS上で---だから私はAccess-into-Linuxの組み合わせでは運がないと思います。Windowsのみ。

人々はFreeTDSドライバー(Sybaseの基盤となるTDSプロトコル用および初期ライセンス経由でMS-SQL)を使用してSQL Serverにアクセスすることができましたが、それを実現するための戦いは通常あります。

3
> library(RODBC)
> db<-file.path("student.accdb")
> channel<-odbcConnectAccess2007(db)
> data<-sqlFetch(channel,"stud")
> data
  ID  Name M1 M2 M3 M4 M5 Result
1  7 Radha 85 65 92 50 62   Pass
2  8  Reka 75 85 96 75 85   Pass
2
user3251747

私のために働いた最良の方法

#Package
library(RODBC)

#Defining the path
datab<-file.path("Main_File.accdb")
channel<-odbcConnectAccess2007(datab)

#reading the individual files inside the Main
table<-sqlFetch(Channel,"File_1")

これにより、Main_File内の「File_1」からデータがフェッチされます。

しかし、上記のコードはUTFエンコーディングをサポートしていませんでした。

2
Rijin

直接アクセスする代わりに、MSAccessからのデータエクスポートを容易にすることもできます。少なくとも最新のMSAccessでは、さまざまなエクスポート手順を保存できます。そうすれば、さまざまなクエリ/テーブルのエクスポートをかなりすばやく実行できます。

これで質問に答えられないことはわかっていますが、RODBCを実行しない場合は回避策になる可能性があります。

1