2016年4月13日 星期三

[MS SQL] Java連接SQL 2014資料庫。

Java連接SQL server 2014步驟如下:

  1. 安裝JDBC驅動程式

    1. 到微軟官方網站下載JDBC驅動程式 (連結)
    2. 選擇"sqljdbc4.jar", 放到Java目錄下的 Ext目錄。
      我的路徑長這樣 : C:\Program Files\Java\jre1.8.0_77\lib\ext

      檔案解壓縮後,有兩個SqlJdbc的檔案,只使用"sqljdbc4.jar"。



      同時將"sqljdbc.jar"、"sqljdbc4.jar" 放到目錄下,Java會先讀取"sqljdbc.jar",產生下列錯誤訊息: " 此驅動程式不支援 Java Runtime Environment (JRE) 版本 1.8。請使用提供JDBC 4.0 支援的 sqljdbc4.jar 類別庫。 "

      猜測應該是跟ClassPath的設定有關係,有興趣的朋友可以參考微軟的官方說明
    3. 設定 sqljdbc_auth.dll

  1. 連接字串、引用 java.sql

    連接字串的寫法參考MSDN上的範例: 
    "jdbc:sqlserver://localhost;databaseName=DataBaseName;IntegratedSecurity=false;user=test;password=*****;";
完工~! 

相關討論: 
JAVA 自製Connection Pooll:
https://www.javaworld.com.tw/jute/post/view?bid=21&id=53049&sty=3


JAVA利用JDBC連至SQL Server範例
http://www.code-club.idv.tw/index.php?action=index&run=article_read&ClassID=72&ArticleID=1637

  

          


2016年3月31日 星期四

[R] 匯入外部資料的方式

利用R分析資料時,根據不同的來源以及格式,有下列不同的匯入方式:


  • 讀取 table format 資料
    • read.table
      •         sep=",",header=F,col.names=c("age", "type_employer", "fnlwgt", "education",
                        "education_num","marital", "occupation", "relationship", "race","sex",
                        "capital_gain", "capital_loss", "hr_per_week","country", "income"),
                fill=FALSE,strip.white=T)
    • read.csv
    • read.csv2
    • read.delim
    • read.delim2
            使用說明如下:
             http://www.r-tutor.com/r-introduction/data-frame/data-import





  • 讀取其他系統的資料
    • MS-SQL
      • 需設定ODBC連線
      • 下載ODBC套件 安裝: install.packages("RODBC")library: library(RODB)請參考 : http://dofinotebook.blogspot.tw/2016/01/r-sql-server.html
    • EXCEL





https://stat.ethz.ch/R-manual/R-devel/library/utils/html/read.table.html





2016年2月17日 星期三

[MS SQL] SQL Sever 時間資料型態與使用

根據MSDN,MS SQL Server時間與日期格式有這些可以使用。

資料類型
格式
範圍
精確度
儲存體大小 (位元組)
使用者自訂的有效秒數小數位數
時區位移
hh:mm:ss[.nnnnnnn]
00:00:00.0000000 23:59:59.9999999
100 奈秒
3 5
YYYY-MM-DD
0001-01-01 9999-12-31
1
3
YYYY-MM-DD hh:mm:ss
1900-01-01 2079-06-06
1 分鐘
4
YYYY-MM-DD hh:mm:ss[. nnn]
1753-01-01 9999-12-31
0.00333 秒鐘
8
YYYY-MM-DD hh:mm:ss[.nnnnnnn]
0001-01-01 00:00:00.0000000 9999-12-31 23:59:59.9999999
100 奈秒
6 8
YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm
0001-01-01 00:00:00.0000000 9999-12-31 23:59:59.9999999 ( UTC 為單位)
100 奈秒
8 10



declare @Date_Example as date =getdate()
declare @Datetime_Example as dateTime =getdate()
declare @SmallDateTime_Example as SmallDateTime=getdate()
declare @DateTime2_Example as datetime2=getdate()
declare @DateTimeOffset_Example as DateTimeOffset=getdate()
declare @Time_Example as Time=getdate()
select @Date_Example as Date_Example,
@Datetime_Example as Datetime_Example,
@SmallDateTime_Example as SmallDateTime_Example,
@DateTime2_Example as DateTime2_Example,
@DateTimeOffset_Example as DateTimeOffset_Example,
@Time_Example as Time_Example
go

declare @Date_Example as date =SYSDATETIME ()
declare @Datetime_Example as dateTime =SYSDATETIME ()
declare @SmallDateTime_Example as SmallDateTime=SYSDATETIME ()
declare @DateTime2_Example as datetime2=SYSDATETIME ()
declare @DateTimeOffset_Example as DateTimeOffset=SYSDATETIME ()
declare @Time_Example as Time=SYSDATETIME ()
select @Date_Example as Date_Example,
@Datetime_Example as Datetime_Example,
@SmallDateTime_Example as SmallDateTime_Example,
@DateTime2_Example as DateTime2_Example,
@DateTimeOffset_Example as DateTimeOffset_Example,
@Time_Example as Time_Example


Ref: MSDN 日期和時間資料類型與函數(Transact-SQL)

2016年2月16日 星期二

[統計] Regression 迴歸的由來

一直不懂為什麼迴歸分析要叫「迴歸」,一直到看到這篇網誌: 廣義線性模型觀點:統計迴歸分析的基本原理與架構,才恍然大悟。跟我一樣有同樣問題的朋友,請大家連到這篇網誌,作者文筆詼諧,內容有趣易讀 ,非常推薦! 


以下針對Regression的由來,做讀後重點節錄 :
---


Regression一詞的由來


Galton在研究身高的時候發現,父母的特徵會遺傳給後代,但是並不會產生極端身高的族群,當父母的身高已經遠離平均身高時,子女的身高會稍微往「平均」靠近一點。

也就是所謂的「物極必反」,當現象到了「極端」,接下來的發展會慢慢地往「平均值」靠近,Galton 把這種現象稱為「Regression

一直慢慢發展到現在,Regression一詞在統計分析的領域,主要為建立數學模型,觀察特定變數(自變數)的變化對結果(應變數)的影響。







Ref: http://molecular-service-science.com/2012/09/12/statistics-regression/

[R] 使用libSVM套件

1. 下載 libSVM 套件


> install.packages("e1071")




Ref :
[1] https://c3h3notes.wordpress.com/2010/10/20/r%E4%B8%8A%E7%9A%84libsvm-package-e1071/

2016年1月31日 星期日

[R] R 使用Sql Server作為資料來源

利用R處理資料,需要使用到 MS SqlServer 的資料

上網查了一下方法,大致上需要設定: 

  1.  在電腦設定ODBC資料來源
  2.  R環境下載套件:  RODBC



電腦設定ODBC資料來源的步驟為: 

  • 開啟 "控制台"  > 系統管理工具 > ODBC資料來源

  • 點選"新增"





  • 選取適合的資料來源。  
    我的Sql Server是使用Sql Server Native Client 11.0所以選這個。



  • 接下來輸入連線識別名稱,R在連線Sql Server時會到ODBC讀取名稱的連線。
  • 接下來,  按照輸入Sql Server認證密碼.......,就完成設定了。

 R環境下載套件

R主要利用 RODBC這個套件連接 SQL Server
初次使用記得要下載RODBC。
下載有很多方式,這個連結有整理很多方法,提供大家參考。

我直接在R Console  輸入指令安裝
> install.packages("RODBC") # 下載 RODBC 套件


之後,就能利用R取得SQL Server的資料了。

# RODBC Example
# into R
library(RODBC)
Rconn <-odbcConnect("SqlServerSample", uid="test", pwd="1234567890")
tblSelect <- sqlQuery(Rconn, "select * from dbo.Orders")
close(Rconn)


[MS-SQL] SQL Server 2014 Time 時間相加

最近要計算總共的行車時間,資料型態為Time。
Sql server 無法做time的加減,網路上查了老半天也沒找到好的方法,
只好土法煉鋼,想辦法將

  1. 資料型態轉為文字,
  2. 前面加上日期,轉為Datetime
  3. 兩個參數進行累加運算
  4. 再跟原本的日期(在這個範例為2015-01-01,參數@date1)相減。



幸好這方法在前面的日期相同的時候,累加出來的時間基本上沒有太大的問題...
不知道有沒有好一點的作法,這個做法讓我很不安心,總感覺程式隨時會爆炸。
真的好想要知道有沒有好一點的作法...Q_Q