日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

R语言之连接mysql数据库

發布時間:2023/12/19 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R语言之连接mysql数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記
PS:寫這個Blog的初衷是,心血來潮考古自己的Blog,看到3年前寫的同一主題Blog,差點氣到吐血,就重新寫一遍了,順便加一點R語言讀取數據的其他方式。


R語言之連接mysql數據庫

從mysql中讀取數據

在用R連接mysql之前,我添加一個數據源:

注意,添加mysql數據源時,要填寫數據源名稱,用戶名,密碼和要使用的數據庫

如果不添加數據源,可能會報以下錯誤:

Warning messages: 1: In RODBC::odbcDriverConnect("DSN=mysql;UID=root;PWD=19970928") :[RODBC] ERROR: state IM002, code 0, message [Microsoft][ODBC 驅動程序管理器] 未發現數據源名稱并且未指定默認驅動程序 2: In RODBC::odbcDriverConnect("DSN=mysql;UID=root;PWD=19970928") :ODBC connection failed

如果沒有指定要使用的數據庫,將無法進行查詢/添加/刪除等一系列操作(可能通過別的方法可以進行這些操作,但是現在我不知道,所以假裝無法操作),因為R不知道操縱哪個數據庫,在用sqlTables方法時,可能會出現以下情況:

[1] TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS <0 行> (或0-長度的row.names)

沒錯,啥表都查不到,這不是因為數據庫里真的沒有表,而是因為沒有指定要使用的數據庫!

好做完這一切后,開始我們的實驗。

  • 導包,并創建數據庫連接
  • library(RODBC) #建立數據庫連接 channel <- odbcConnect("R4mysql", uid="root", pwd="19970928") #要連接的數據源名稱為R4mysql,用戶名urrot, 密碼19970928
  • 顯示數據庫中的表
  • #顯示stu數據庫中的表 sqlTables(channel)

    控制臺輸出:

    TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS 1 stu images TABLE 2 stu interest TABLE 3 stu my_class_1 TABLE 4 stu test_table TABLE
  • 獲取數據庫中的表
  • #將數據庫中的interest表讀到數據框中 df <- sqlFetch(channel,"interest") print(df)

    控制臺輸出:

    id name hobby grade price comment 1 2 Bunny sing B 8888.88 小黃唧唧 2 3 Ada draw A 9999.99 小黃的鏟屎官 3 6 Bai dance A 8769.43 jijijiji
  • 查詢及插入記錄
  • #查詢語句 query = 'SELECT * FROM interest WHERE price > 9000' #向數據庫發送查詢結果 my_select <- sqlQuery(channel,query) print(my_select)#添加記錄語句 query = 'insert into interest values(8, "Add", "sing", "B", 3456.32, "不想說話")' #向數據庫添加記錄 sqlQuery(channel,query)

    控制臺輸出:

    id name hobby grade price comment 1 3 Ada draw A 9999.99 小黃的鏟屎官

    查看mysql數據庫中interest數據表的情況:

    # id, name, hobby, grade, price, comment '2', 'Bunny', 'sing', 'B', '8888.88', '小黃唧唧' '3', 'Ada', 'draw', 'A', '9999.99', '小黃的鏟屎官' '6', 'Bai', 'dance', 'A', '8769.43', 'jijijiji' '8', 'Add', 'sing', 'B', '3456.32', '不想說話'

    記錄成功添加!

  • 寫入/更新一個數據表
  • #將數據框寫入或更新(append=TRUE)到數據庫的某個表中 r_df <- data.frame(x = seq(0, 8, 2), y = letters[1:5]) sqlSave(channel, # 創建的數據連接r_df, #R數據框名稱tablename = "r_sql_data", # 數據庫表名rownames = FALSE, # 不存儲數據框的行名append = F) r_df <- data.frame(x = seq(0, 8, 2), y = letters[1:5]) sqlSave(channel, # 創建的數據連接r_df, #R數據框名稱tablename = "r_sql_data2", # 數據庫表名rownames = T, # 存儲數據框的行名append = F)

    查看mysql數據庫中,表r_sql_data和表r_sql_data2是否被寫入:

    # Tables_in_stu 'images' 'interest' 'my_class_1' 'r_sql_data' 'r_sql_data2' 'test_table'

    嗯!成功寫入了。

    再看看分別看看兩個數據表中的數據。

    表r_sql_data:

    # x, y '0', 'a' '2', 'b' '4', 'c' '6', 'd' '8', 'e'

    表r_sql_data2:

    # rownames, x, y '1', '0', 'a' '2', '2', 'b' '3', '4', 'c' '4', '6', 'd' '5', '8', 'e'

    可以看到,r_sql_data2表相對于r_sql_data表多了一個行名,這是因為我們在構建r_sql_data2時,將參數rownames設置為TRUE。

  • 刪除數據庫中的表
  • #刪除數據庫中的r_sql_data表和r_sql_data2表 sqlDrop(channel,'r_sql_data') sqlDrop(channel,'r_sql_data2')
  • 關閉連接
  • #關閉連接 close(channel)

    其他導入方式

    ##直接從剪切板讀取文件 r <- read.table("clipboard",head = TRUE)##讀取csv、txt文件 r <- read.csv("shuju.csv", head = TRUE) #設置stringsAsFactors = F 可以不讓字符串變成因子 r <- read.table("shuju.txt", head = TRUE)##讀取xlsx文件 library(readxl) r <- read_excel("shuju.xlsx", sheet = 1)##以及各種其他文件 library(foreign) #STATA r <- read.dta("shuju.dta") #SAS r <- read.xport('shuju.xpt') #SPSS r <- read.spss('shuju.sav')

    這里就不對其他導入方式的語法進行詳述了。

    總結

    以上是生活随笔為你收集整理的R语言之连接mysql数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。