2017-09-16 3 views
3

Rに新しくあり、Accessデータベースへの接続に問題があります。これは、(RODBCパッケージを実行する前に手動でロード)私が実行しているコードです:Rからの.accdbデータベースへの接続方法

library(RDOBC) 

conn <- odbcDriverConnect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ='C:/db/dbNorthwind.accdb'") 
subset(sqlTables(conn), TABLE_TYPE == "TABLE") 
df <- sqlFetch(conn, "tblCustomer") 
df # 

私は、エラー・メッセージが表示されます:

Error in sqlTables(conn) : first argument is not an open RODBC channel.

は解決する方法上の任意のヒントを知っていますか?

環境:

  • 64ビットWindows
  • 32ビットのMS Access 2013
  • 64ビットのMicrosoft Rオープン

答えて

3

あなたが使っているコードは結構です、あなたセットアップはありません。

64ビットのRおよび64ビットのMSアクセス、または32ビットのRおよび32ビットMSアクセスのいずれかを使用する必要があります。ただし、64ビットアクセスデータベースエンジン(here (2016 version)またはhere (2010 version))をインストールすることもできます。

フルバージョンのAccessとデータベースエンジンの両方をインストールするとさまざまな結果が得られました(現在Access 32-bits 2016があり、Accessデータベースエンジン64-bit 2016はインストールできませんでしたが、2010バージョンはインストーラで/ passiveコマンドを使用します)。

32ビットフルバージョンと64ビットデータベースエンジンを1台のマシンにインストールする方法については、this blogを参照してください。しかし、注記したように、結果は異なる場合があります。

+0

:あなたは、[Microsoft Accessのデータベースエンジン2016再頒布可能](https://www.microsoft.com/en-us/download/details.aspx?id=54920のインストーラと言っています)が '/ passive'スイッチのサポートを中止したため、2016年版の64ビット版と32ビット版を同じマシンに強制的に適用することはできなくなりましたか? –

+0

@GordThompson短時間で見つけられなかったので、私は正確なものを見つけなかった。私はちょうど私が '/ passive'スイッチでそのインストーラを使用しようとしたと言って、私はすでに32ビットOfficeを実行していたので私がそれをインストールできないというエラーメッセージを得ました。私が知る限り、それほど多くの違いはありません –

+0

さて、ありがとう。マイクロソフトが、あまりにも多くの人々が '/ passive 'スイッチを使ってOfficeのインストールを壊していると判断し、単に削除したとすれば、私は驚かないだろう。とにかく、私はいつもそれが "悪いアイデア(TM)"であると主張しました。そうでなければ、デフォルトで '/ passive'の動作を防ぐためにインストーラをコーディングするのはどうしてですか? –

1

データベースのインポートについてよくわかりませんが、私が通常行っていることを教えてお手伝いしようとします。 最初に行う必要があるのは、データベースにアクセスするためにDSNを持っているかどうかを理解することです。開始をクリックしてODBCデータソースに移動すると、この操作を実行できます。 "UserDSN"というウィンドウが表示されているときに、ファイルがあるかどうかを確認します。もしそれがない場合は、単に「追加」をクリックして追加するだけで、あなたの場合にはあなたのファイルを読み込むドライバを探します.accdbです。

http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=e

あなたはあなたのDSNを作成した後、あなたがRに入ると、あなたは、このコードの数行を書く:あなたはここでそれをダウンロードすることができ、ドライバを持っていない場合は 。ここでは例を挙げます。これは、

任意の助けであることを

library(RODBC) 


odbcDS <- "PCResale Customer Database" 

tmp <- odbcConnect(dsn = odbcDS) 

df <- sqlFetch(tmp, "CustomerT") 

希望:

https://www.599cd.com/access/studentdatabases/

Accessファイル:アクセス初級RIで1

ザ・が入力した 私はからアクセスファイルをダウンロードしています

チャオ!

+0

ありがとうございます。私の環境が正しく設定されていれば、これも試してみるとよいでしょう。 ( "... ERROR:状態IM014、コード0、メッセージ[Microsoft] [ODBCドライバマネージャ]指定されたDSNにドライバとアプリケーションのアーキテクチャの不一致が含まれています...") – HerrSober

0

これは私にとってうまくいきました。ただ、確認する

library(RODBC) 

# for 32 bit windows 
# Connect to Access db 
# channel <- odbcConnectAccess("C:/Users/Excel/Desktop/Coding/Microsoft Access/Northwind.mdb") 

# Get data 
# data <- sqlQuery(channel , paste ("select * from Name_of_table_in_my_database")) 


# for 64 bit windows 
channel <- odbcDriverConnect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users/Excel/Desktop/Coding/Microsoft Access/Northwind.mdb") 

data <- sqlQuery(channel , paste ("select * from CUSTOMERS")) 

odbcCloseAll() 
関連する問題