放在這個專題下,是因為有時候我們數據分析師的確是懂得一點數據庫的操作知識或者會一些SQL,平時我用的比較多的就是MySQL,如果說我們一般就是要學一些SQL操作的話,可能就足以應付平時的工作,至於對象,比如Oracle,DB2等等數據庫產品,這種SQL盡管差異有很多,不過總體上可以一條路走下來。不過今天說的幾個問題是和MySQL產品本身有關系的,因為我們一些數據處理和分析是需要它來幫忙的。
和MySQL打交道,基本我們都是在解決與數據庫連接的問題比較撓頭,下面簡單說說怎么通過MySQL與Excel、SPSS、Clementine、R連接,並完成一些查詢,限於篇幅分期描述一下。
MySQL連接Excel
MySQL與Excel連接有時候其實很有作用,原因在於我們有時候在Navicat這樣的軟件中查詢的結果,必須要保存查詢,然后選擇輸出格式(這里是Excel的格式),這種方式其實效率很低,主要是時間上我們受不了。所以我們通過建立Excel與MySQL的連接,直接就可以把數據導入到Excel中,這樣處理起來速度就會快一些。
操作:
Excel與MySQL連接是使用數據源的,即通過ODBC的方式提供連接,因此事先你要下載MySQL connector/ODBC(http://dev.mysql.com/downloads/connector/odbc/5.1.html)。隨后進入管理工具(控制面板|管理工具|數據源ODBC)如下圖所示
隨后,你可以添加數據源(用戶DSN),選擇MySQL ODBC 5.1 Driver,如下圖
點擊完成,此時就會彈出來connector的面板,在這里完成相關信息的填寫,如下圖
Data Source Name:數據源的名字,最后會顯示在用戶DSN面板,並且我們在連接時也是依靠這個名字作為連接的標示符;
TCP/IP Server:連接的數據庫IP地址以及端口,默認是3306;
User:數據庫賬戶名;
Password:賬戶密碼;
Database:在此IP的DBMS中的數據庫名稱,一般輸入用戶名和密碼后,數據庫就會顯示出來,我們從中選擇一個我們需要的數據庫就行了。
隨后點擊確定,回到數據源窗口,此時多了一個數據源,記住數據源的名字就可以了,下面來說怎么連接,在Excel中選擇數據|連接
在打開的對話框中,點擊添加,會彈出來現有的連接,之后我們選擇左下角的瀏覽更多,建立一個數據源,此時彈出來一個對話框,如下:
選擇連接到新數據源.odc,選擇打開按鈕,彈出如下的對話框:
在這里我們選擇ODBC DSN,單擊下一步,找到我們的數據源,名叫testODBC
單擊下一步,在新的對話框中,我們能看到我們要連接的數據庫,及數據庫中的具體數據表,如下圖
確定一個表之后,單擊完成,就基本上是完成了Excel與MySQL某個數據庫的某個表的連接工作,下面我們查看屬性能夠看到如下的信息:
使用狀況,比如刷新頻率之類的,這里我們主要關注定義標簽下的信息,命令文本的地方就是我們編寫SQL的位置,這一點其實比較有用,比如我們數據庫存儲的時間都是unixtime形式,這里輸出時,我們就可以考慮轉換unixtime,然后在進行輸出,效果就會更好。但是到此我們的數據並沒有輸出,我們只是完成了配置工作,點擊數據|現有連接,對話框如下:
選擇我們連接的表的名字,確定后彈出如下的對話框,詢問導出數據的導出位置以及形式,如下圖:
隨后Excel顯示,正在獲取數據
幾秒后,就會把原始的數據庫數據通過我們的Sql操作形式直接輸出到Excel中,如下
這樣數據庫數據就很快的導出了,時間上節省了不少,與此同時為了進一步優化操作,Excel插件 SQLDrill也出現了,該工具強化了這個SQL操作的能力,使得我們用Excel操作數據庫數據更加容易了。
在一台電腦上創建兩個MySQL服務
其實我所說的這種情況比較少見,但是有時候確實也是用的,比如在localhost下安裝了兩個版本的mysql,這時候往往就會出現問題,比如兩個版本mysql服務無法啟動,或者其中一個版本的服務無法啟動,而我們希望兩個版本的mysql服務都能夠啟動,這里就說一下怎么樣在一台電腦上啟動兩個mysql。
首先安裝一個版本的mysql,啟動服務,測試是否能夠正常使用,此時確定端口為3306。
隨后開始安裝另一個版本的mysql,安裝完畢后,必然啟動不了,此時估計都會想到去更改my.ini的配置文件中的port,但是之后仍舊無法啟動,這種情況下,我們可以這樣來操作:
打開CMD,進入mysql\bin文件中,如下圖
隨后,我們創建服務 命令如下:
mysqld install mysql2
隨后顯示mysql2服務創建成功,此時我們可以去查詢一下這個服務
但是,如果你此時去啟動該服務,還是啟動不了,因為此時用到的my.ini還是最開始那個mysql.ini。因此我們這里要指定后來這個服務所要用到的my.ini文件,操作如下:
運行窗口,輸入regedit,進入注冊表
在注冊表中,尋找 service中的mysql2的信息
找到后,注意mysql2其中一個賦值信息,在其中加入一段 --default-file="dir of your second my.ini",即把第二個mysql的myini地址導入:
與此同時我們再來看一下我們安裝的第一個mysql的注冊表服務信息
到此,其實我們的工作還沒完成,因為此時這兩個服務還公用一個3306的默認端口,此時還要在第二個my.ini文件中把port端口改一下,非3306的就可以。隨后我們啟動服務:
可以看到服務啟動成功,我們查詢一下目前的端口使用情況(我使用的是3310)
通過查詢能夠看到兩個服務都啟動了:
Note:如果以上操作之后還是不能啟動,原因就只有兩點了:
刪除data文件中的log信息;
my.ini配置出現錯誤。
今天就先說這兩個和mysql有關的問題,明天說說怎么在R中連接數據,並進行靈活的查詢方法。