作業環境:Mac OSX
資料庫:本機 / 資料庫名稱 = a777
因為我個人對於 SQL 還蠻熟悉的,所以一些初步資料整理的工作我都會傾向在資料匯入時就完成,所以我很喜歡在 R 與 Python 中直接使用 SQL ,好處也是如果以後換轉到不同平台時,SQL 這個產業標準還能延用下去
R 連接 MySQL 資料庫
(1)安裝 RJDBC RMYSQL 套件
在Linux體系下安裝 RODBC 比較麻煩點,RJDBC 會省事很多
(2)語法範例程序:連接資料庫→取得資料→關閉連線→檢視資料
library(RJDBC)
library(RMySQL)
#定義連線字串
conn <- dbConnect(MySQL(), dbname = "a777", username="root", password="")
#將SQL查詢後的資料置於 data,資料型別為 data.frame
data = dbGetQuery(conn, "select * from MINING_BASE")
#關閉資料庫連線
dbDisconnect(conn)
head(data)
#進行資料初步檢視
python 連接 MySQL 資料庫
pandas 不是連接 MYSQL 的必要套件,但因為資料取得後也是要進行相關統計分析
所以也直接引用,pandas可以視為python中主要處理統計相關議題的重要套件
(2)語法範例程序:連接資料庫→取得資料→關閉連線→檢視資料
import pandas as pd
from pandas.io.sql import read_sql
# frame_query 是舊方法,pandas 建議大家改用新的 read_sql
# 引用 MySQLdb 用以連接 MySQL資料庫
#定義連線字串
mysql_cn= MySQLdb.connect(host='127.0.0.1',
port=3306,user='root', passwd='',
db='a777')
#將SQL查詢後的資料置於 data,資料型別為 pandas.core.frame.DataFrame
# rad_sql( "SQL語法" , 連線字串)
data = read_sql("select * from MINING_BASE " , mysql_cn )
mysql_cn.close()
#關閉資料連線
data.head()
#進行資料初步檢視
參考資料:
http://www.r-bloggers.com/mysql-and-r/
備註:
# Python 中還有一種方式是使用 sqlalchemy ORM
# 暫時用不到這種語法,但也做為一個補充放上來
# 參考網址 http://docs.sqlalchemy.org/en/rel_0_9/orm/
# 中文教學網址 http://chimerhapsody.blogspot.tw/2013/08/python-sqlalchemy-orm-part-1.html
import sqlalchemy
import csv
engine = sqlalchemy.create_engine('mysql://root@localhost/a777')
connection = engine.connect()
result = connection.execute("select MINING_DW_SUBSCR_NO from MINING_BASE")
row = result.fetchone()
#for row in result:
# print "your data in here ", row['MINING_DW_SUBSCR_NO']
fh = open('data77777.csv', 'wb')
outcsv = csv.writer(fh)
outcsv.writerow(result.keys())
outcsv.writerows(result)
fh.close
connection.close()