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