R語言連線SQL資料庫的兩種方式配置過程記錄

2021-07-06 10:31:14 字數 3884 閱讀 7244

不是一切大樹,都被暴風折斷;不是一切種子,都找不到生根的土壤;不是一切真情,都流失在人心的沙漠裡;不是一切夢想,都甘願被折掉翅膀。

不是一切火焰,都只燃燒自己,而不把別人照亮;不是一切星星,都僅指示黑夜,而不報告曙光;不是一切歌聲,都掠過耳旁,而不留在心上。

——舒婷《這也是一切》

r連線sql資料庫的方法有許多種(基於不同的packages),例如rmysql, rsqlite等是基於dbi方式連線資料庫,也可以用rodbc方式來連線。

首先我為了測試是否能連線成功,我需要建乙個資料庫,本文centos 6.7環境,採用sqlite,首先在/home/emptyset/sqlite目錄下建立乙個新資料庫test.db

$ sqlite3 /home/emptyset/sqlite/test.db
於是進入了sqlite3命令列,接下去建立一張測試表,插入一行資料

sqlite> create

table dt_user (

...> id integer

primary

key autoincrement not

null,

...> account char(20) not

null,

...> name char(10) not

null

...> );

sqlite> .tables

dt_user

sqlite> insert

into dt_user (account,name) values ('[email protected]','wen gu');

sqlite> select * from dt_user;

1|[email protected]|wen gu

嗯,現在資料已經插入成功了。

接下去我們直接開啟r語言命令列,在命令列下,我們需要安裝rsqlite包——

install.packages('rsqlite')
> library(rsqlite)

loading required package: dbi

> conn <- dbconnect(dbdriver("sqlite"), dbname="/home/emptyset/sqlite/test.db");

> dblisttables(conn) #檢視tables

[1] "dt_user"

"sqlite_sequence"

"sqlite_stat1"

> dblistfields(conn, 'dt_user') #檢視dt_user表的欄位名

[1] "id"

"account"

"name"

> user <- dbgetquery(conn, "select * from dt_user where id>0")

> user

id account name11

21324784

@qq.com wen gu

dbi方式連線成功啦~同理可以用rmysql等等其他包來連線相應資料庫

> install.packages('rodbc')    #安裝rodbc包
結果出錯了!提示

in install.packages("rodbc") :

installation of

package 『rodbc』 had non-zero exit status

原因是沒有安裝unixodbc,在centos下可以通過yum安裝

yum install unixodbc unixodbc-devel libtool-ltdl libtool-ltdl

-devel

wget 

.tar

.gztar xvfz sqliteodbc-0.9992

.tar

.gz#解壓

cd sqliteodbc-0.9992

.tar

.gz#進入目錄

./configure

結果……出錯了,提示no usable sqlite header/library on this system,一番google後知道原來是沒有裝sqlite-devel,不難解決,可以用yum安裝

yum install sqlite-devel
隨後繼續剛才的編譯工作——

./configure

make

sudo make install

好了,至此軟體已經裝完了。接下去要對odbc進行一下配置,對於sqliteodbc的配置說明,我們可以在這裡找到

第一步:將驅動新增到配置檔案

odbc的配置檔案在/etc/odbcinst.ini,vim開啟它

vim /etc/odbcinst.ini
在檔案尾部加上

[sqlite]

description=sqlite odbc driver

driver=/usr/local/lib/libsqlite3odbc.so

setup=/usr/local/lib/libsqlite3odbc.so

threading=2

第二步:配置dsn資料來源

vim ~/.odbc

.ini

注意,方括號裡的mysqlitedb就是資料來源的名字,待會兒用它就可以連線到下面對應的/home/emptyset/sqlite/test.db

[mysqlitedb]

description=my sqlite test database

driver=sqlite

database=/home/emptyset/sqlite/test.db

# optional lock timeout in milliseconds

timeout=2000

——至此sqlite的odbc已經配置完了,測試一下:

isql mysqlitedb

+---------------------------------------+

| connected! |

| |

| sql-statement |

| help [tablename] |

| quit |

| |

+---------------------------------------+

連線成功。讓我們進入r試一下吧

> conn <- odbcconnect("mysqlitedb")

> result

<- sqlquery(conn, "select * from dt_user")

> result

id account name11

[email protected] wen gu

搞定。

pandas連線MySQL資料庫的兩種方式

read sql sql,con,index col none coerce float true params none parse dates none columns none chunksize none 引數的意義 sql 為可執行的sql語句 con 資料庫的連線 index col 選...

php mysqli資料庫連線的兩種方式

這裡講述mysqli資料庫連線兩種方式比較,即物件導向與面向過程。如下 第一種方式 物件導向的方式建立資料庫連線 複製 如下 mysqli new mysqli localhost root 1233456 預設的 mysql的類,其屬性與方法見手冊 if mysqli connect error ...

php mysqli資料庫連線的兩種方式

這裡講述mysqli資料庫連線兩種方式比較,即物件導向與面向過程。如下 第一種方式 物件導向的方式建立資料庫連線 複製 如下 mysqli new mysqli localhost root 1233456 預設的 mysql的類,其屬性與方法見手冊 if mysqli connect error ...