RからRODBCパッケージを介してSQL Serverに接続する

 RからSQL Serverに接続する方法を試行錯誤していた.今回その方法を見つけたので備忘録として公開する.

SQL Server側の準備

SQLServerManage15.mscでの処理

 検索タブにSQLServerManager15.mscとタイプすると下図のようにSQLServer構成マネージャが出現するのでクリックして起動する.

SQLServer構成マネージャの起動
SQLServer構成マネージャの起動

 「SQL Serverネットワークの構成」で名前付きパイプとTCP/IPを有効化する.その後SQL Serverを再起動する.

名前付きパイプとTCP/IPを有効化
名前付きパイプとTCP/IPを有効化

 「SQL Serverのサービス」で初期状態では停止しているSQL Server Browserを開始する.

SQL Server Browserを開始
SQL Server Browserを開始

Rでの処理

接続文字列の生成

 下記コードを実行する.

> library(RODBC)
> db = function(){
     driver='{SQL Server}'
     server = 'SERVER_NAME' 
     database = 'HeatStrokeDB' 
     trusted_connection = 'yes'
     conn=paste('DRIVER=',driver,';SERVER=',server,';DATABASE=',database,';Trusted_Connection=',trusted_connection,';',sep="")
     cnxn = odbcDriverConnect(conn)
     return(cnxn)  
 }

接続の実際

 上記で定義したユーザー定義関数を実行し,結果をconnに格納する.サーバーにログインできない,データベースに到達できない場合などは下記コードがエラーで失敗する.

> conn=db()

クエリ

 クエリを組み立て,実行する.

> sqlText="SELECT * FROM T_HeatStroke"
> dat=sqlQuery(conn, sqlText)

 データフレームdatにクエリの結果が格納された.最初の6件だけ抽出してみる.

> head(dat)
        日付 都道府県コード 搬送人員(計) 年齢区分:新生児
1 2014-08-08             19              3                0
2 2014-08-08             20              1                0
3 2014-08-08             21              4                0
4 2014-08-08             22             10                0
5 2014-08-08             23             19                0
6 2014-08-08             24              1                0
  年齢区分:乳幼児 年齢区分:少年 年齢区分:成人 年齢区分:高齢者
1                0              0              1                2
2                0              0              0                1
3                0              0              1                3
4                2              2              0                6
5                0              5              5                9
6                0              0              1                0
  年齢区分:不明 傷病程度:死亡 傷病程度:重症 傷病程度:中等症
1              0              0              0                3
2              0              0              0                1
3              0              0              0                1
4              0              0              0                1
5              0              0              0                5
6              0              0              0                0
  傷病程度:軽症 傷病程度:その他
1              0                0
2              0                0
3              3                0
4              9                0
5             14                0
6              1                0

切断

 接続を切断するには下記コードを実行する.

> odbcCloseAll()

まとめ

 RからSQL Serverに接続する手順を示した.R側ではほとんどすることがなく,SQL Server側の準備が必要だった.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください