iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 15
0
Data Technology

Microsoft R Solution系列 第 15

Day15 - MSSQL R Service Part3 與MSSQL Table互動

  • 分享至 

  • xImage
  •  

在R Service與資料庫Table的互動場景中, 最常看到的就是從Table選擇資料, 然後在R Service裡運算與處理, 最後寫入其他的Table中, 所以本篇就來實作這個場景.

首先我們先拿Day06薪資職位核薪表資料的csv匯入到MSSQL裡, 所以在SSMS利用匯入文字檔的功能將csv導入如下
https://ithelp.ithome.com.tw/upload/images/20180102/20103333XH6FSzKtK3.png

之後會跳底下視窗, 按下Next
https://ithelp.ithome.com.tw/upload/images/20180102/20103333DQhZptaxuD.png

接著按下Browse找到csv檔, 再按下Next
https://ithelp.ithome.com.tw/upload/images/20180102/20103333SZNYpl4OAl.png

接著預覽資料, 沒問題就按下Next
https://ithelp.ithome.com.tw/upload/images/20180102/20103333Ovrxp2AQKL.png

之後修改欄位屬性, 若沒有問題按下Next
https://ithelp.ithome.com.tw/upload/images/20180102/20103333B4UWieSAs0.png

最後確認沒問題後, 按下Finish
https://ithelp.ithome.com.tw/upload/images/20180102/20103333qYGedrlzFk.png

成功畫面如下, 按下Close
https://ithelp.ithome.com.tw/upload/images/20180102/20103333Ji7mkiyoGX.png

接著用下列程式碼測試一下R Service是能讀到Table經由Select之後傳進來的資料
https://ithelp.ithome.com.tw/upload/images/20180102/20103333sQADg44VP9.png

再來我們新增一個Table讓R Service丟出來的資料可以寫入
https://ithelp.ithome.com.tw/upload/images/20180102/20103333WUxqybiIRb.png

接著在R裡, 做一些加工新增三個欄位, L2, L3與L4, 修改程式碼如下, 並用INSERT INTO將資料寫入剛建好的Table裡
https://ithelp.ithome.com.tw/upload/images/20180102/20103333tbi5u9Ubq8.png

不過執行時卻出現下錯誤, 查了以後發現, INSERT INTO的指令不接受RESULT SETS, 解決方式就是用Stored Procedure包起來
https://raresql.com/tag/incorrect-syntax-near-sets/
https://ithelp.ithome.com.tw/upload/images/20180102/20103333ElNWuBJAYv.png

所以新建一個Stored Procedure如下
https://ithelp.ithome.com.tw/upload/images/20180102/20103333kJnTLbHI0q.png

再來修改原本寫入Table的程式碼, 順便將寫入的資料也Select出來看看如下
https://ithelp.ithome.com.tw/upload/images/20180102/20103333aoGtUNegwU.png

如同前面幾篇所提, R Service與MSSQL互動, 都是透過Stored Procedure, 有鑑於R 與 SQL 資料類型和資料物件有些眉角要注意, 下一篇來研究一下, 避免日後踩雷!


上一篇
Day14 - MSSQL R Service Part2 參數化Store Procedure與繪圖
下一篇
Day16 - MSSQL R Service Part4 資料類型和資料物件
系列文
Microsoft R Solution30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言