發表文章

目前顯示的是有「sql」標籤的文章

PostgreSQL的數值資料型態(Numeric Data Types)

圖片
PostgreSQL的數值資料型態(Numeric Data Types) 今天仔細看數值資料型態時,才仔細看到 postgresql 的數值型態其中一種為 numeric 的型態,中文翻譯為「任意精度數值」,一直間無法理解他的意思,後來才發現它可以讓用戶自行定義十進位的位數及小數點後面的位數。難怪科學運算都喜歡用 postgresql DB 來操作,一般生活中的應用實在太少運用到麼大的需求。 在最新的 9.5 版它的範圍描述是這樣寫的 up to 131072 digits before the decimal point; up to 16383 digits after the decimal point 如果我解讀沒錯的話,在小數點前可以 131072 位數,在小數點後為 16383 位數。大概以後只有十兆換一塊的通膨才有可能有機會用到了(誤)。 例如: 數字 23.5141 的 精度(precision)為 6 而比例(scale)為 4 宣告格式為: NUMERIC(precision, scale) NUMERIC(6, 4) 在 pgadmin 工具中的設定範例如下: 程式語言上運算的問題: 但其實宣告了這個欄位型態後,匯衍生出另一個問題。就是 DB 可以操作這個數字運算操作,但是程式語言有困難呀!!!找了一下,好像 PHP 的 BCMATH 好像可以解決任意精確度運算的這個問題,下次有遇到再來研究巴。 http://php.net/manual/zh/ref.bc.php # 9.5 版的 DATA TYPE 描述 https://www.postgresql.org/docs/9.5/static/datatype-numeric.html # 中文 8.0 版的 DATA TYPE http://twpug.net/docs/postgresql-doc-8.0-zh_TW/datatype.html#DATATYPE-NUMERIC-DECIMAL

Postgresql 上面的「尿布、啤酒、星期五」,不用寫程式下行 SQL 就搞定

圖片
MADlib + postgresql 9.4 in Linux CentOS 7 MADlib®: Big Data Machine Learning in SQL for Data Scientists 啤酒、尿布、星期五 MADlib 在 postgresql 上面以是以 postgres 函式的型態來實現對於數據資料的操作 ,你可以透過這個以 plpython 語言寫的函式,直接操作原始數據轉存到新的資料庫當中,這個函式庫支援很多機器學習的演算法,可以很方便的分析數據. 目前提供的有底下這些,看起來應該有陸續發展的可能,因為已經被放到 Apache 基金會的子項目計畫內了...XDXD 功能: Classification 分類 Regression 回歸 Clustering 集群 Topic Modeling 主題模型 Association Rule Mining 關聯性規則 Descriptive Statistics 描述性統計 Validation 驗證 more... http://madlib.net/product/ 官方網站 http://madlib.net/ 我使用來安裝的版本是 CentOS Linux 7 ,但是安裝這個 LIB 前請先選擇一套支援的資料庫系統,這裡我用的是 Postgresql 9.4 的版本,安裝請參考這一篇: http://blog.jangmt.com/2016/03/postgresql-94-in-centos-linux-7.html 下載 http://madlib.net/download/ 安裝 [root@c7 ~]#    yum install madlib-1.8-Linux.rpm  -y 檢查是否裝了,安裝好後他的路徑放在 /usr/local/madlib/ [root@c7 ~]# rpm -qa | grep madlib madlib-1.8-1.x86_64 我使用 Single Node 的模式,系統需求:( HAWQ >= 1.2, Greenplum >= 4.2 or PostgreSQL >= 9.2 ) 在安裝後,這特 MADlib ...

安裝 mariadb 並修改 root 密碼 in CentOS Linux 7

---- 安裝 mariadb 並修改 root 密碼 in CentOS Linux 7 ---- # 安裝 mariadb server [root@hnamenode2 ~]# yum -y install mariadb-server mariadb-bench mariadb-libs # 立即啟動 mariadb [root@hnamenode2 ~]# systemctl start mariadb # 預設開機啟動 [root@hnamenode2 ~]# systemctl enable mariadb ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service' # 狀態 [root@hnamenode2 ~]# systemctl status mariadb mariadb.service - MariaDB database server    Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled)    Active: active (running) since 六 2015-09-26 21:21:58 CST; 7s ago   Process: 10071 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)   Process: 9990 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)  Main PID: 10069 (mysqld_safe)    CGroup: /system.slice/mariadb.service            ├─10069 /bin...

打開Oracle SQL developer 每次查詢只能 50 筆的限制 (sql developer 50 rows limit)

圖片
打開Oracle SQL developer 每次查詢只能 50 筆的限制 (sql developer 50 rows limit) 工具->偏好設定->資料庫->進階->SQL陣列擷取大小(最大值500) 最大才給 500 .... XD 可能更大要付費巴.(^^)

AppServ 懶人包的資安問題與檢測(請不要再使用 APPSERV 懶人包)

圖片
此文同時刊載於 http://www.openfoundry.org/tw/foss-programs/9073-appserv- ---- APPSERV ( http://www.appservnetwork.com/ )是一個 Windows 下很成功的懶人包專案,它把 Apache 、PHP、MySQL以及 PHPMyAdmin 整合打包成為一個安裝檔案,對於入門的程式開發人員很方便。也因為它在 2006 年就推出所以到現在仍是下載率很高的專案,每個月約有 10 萬次下載。 圖1:APPSERV每月下載次數 但是問題就在這裡,它目前的版本為 2008-06-10 的版本( http://sourceforge.net/projects/appserv/files/?source=navbar ),作者已經有 5 年多沒有更新了,但是還是有那麼多人下載使用。 在 2009 、2010 有很多 phpMyAdmin 的漏洞陸續被公開,以 CVE-2009-1151( http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2009-1151 ) 為例,它說明在 phpMyAdmin 的 setup.php 程式中有個程式碼可以寫入檔案的漏洞存在。如果找一下還會發現已經有人將它寫成自動化入侵的工具程式。 圖2: CVE-2009-1151自動化入侵工具 如果知道漏洞存在並補強其實不會造成什麼問題,但問題在於使用 APPSERV 的大多為初學者或對於系統程式不熟悉的使用者,只求網站能工作不會注意這些細節的問題。如果你用 google 的 inurl + site + intext 搭配搜尋你會發現真的很多人不在意,且甚至把這個網站它放到公開的網路上工作。關鍵字:「phpmyadmin  scripts  setup.php win32」 圖3: google「inurl:phpmyadmin/scripts/ site:edu.tw」 圖4: 沒有保護的 scripts 目錄,透過 google 就可找到 在 2013/05 月的時候 TACERT 已經針對這部份的入侵細節做了一份攻擊行為的分析報告( http://cer...

在 RHEL/CENTOS 6 Debian Linux 上使用 PostgreSQL資料庫

圖片
Contents 1 ABOUT 2 在RHEL/CENTOS 上使用 PostgreSQL資料庫 2.1 PostgreSQL 2.2 為何要用postgresql? 2.3 PostgreSQL 的安裝 2.3.1 postgresql 的套件安裝 2.3.2 在資料庫系統上,建立使用者與資料庫 2.4 更改 PostgreSQL 的登入認證模式 2.5 安裝 PostgreSQL 管理工具 2.6 建立使用者及匯入資料 2.6.1 建立使用者 2.6.2 建立資料庫 2.6.3 匯入資料 2.6.4 匯出資料 2.6.5 shell script 建立使用者資料 2.7 參考資料 3 debian 安裝 postgresql 資料庫 3.1 安裝 phpPgAdmin 管理介面 3.2 大量建立帳號及匯入資料 ABOUT 安裝 postgresql 在 debian linux or centos linux 在RHEL/CENTOS 上使用 PostgreSQL資料庫 PostgreSQL PostgreSQL是自由的關聯式資料庫伺服器(DBMS),授權模式採取 BSD 授權許可最大好處是可以用於商業營運或修改成為自己的產品一部分而無須支付任何費用也不必擔心需要將修改過後的原始碼公開等眾多GPL授權軟體需要面對的 問題。它具有商業資料庫絕大部分的功能,對於中小企業的應用十分的足夠。相較於 MySQL 這開放的資料庫系統,他有更完整的關聯式資料庫功能及優秀的穩定性。 為何要用postgresql? 為何要用轉用 postgresql? 我需要一個可以商業化的資料庫:PostgreSQL 採用授權較為寬鬆的 BSD 授權,對於商業公司而言不用擔心日後 PostgreSQL 的開發人員突然反悔改成其他授權模式的影響。 一個強大的資料庫引擎:交易、觸發、內存程序等完整的關聯式資料庫機制,提供開發人員在開發過程中更方便的操作。 一個取得容易,價格低廉的資料庫引擎:自由的BSD授權提供最便宜的成本。世界各地都有相關的 Mirror site。 商用資料庫知名產品經常的更新...

MySQL 安裝及命令列使用說明(centos 6.4)

來源 Sql mysql linuxcmd 這個版面比較正常 Contents 1 簡介 2 MySQL安裝 3 常用資料庫命令列工具 3.1 mysql 指令 3.2 mysql 指令練習 3.3 mysql 編碼問題 3.4 mysqldump 指令 3.5 latin1 編碼的中文問題透過 mysqldump 修正 3.6 mysqlshow 4 練習 簡介 MySQL 是一個開放原始碼的關聯式資料庫管理系統 2008年被昇陽微系統(Sun Microsystems)收購。2009年,甲骨文公司(Oracle)收購昇陽微系統。 可以使用命令列工具管理MySQL資料庫(命令mysql 和 mysqladmin) phpMyAdmin是由PHP寫成的MySQL資料庫系統管理程式,讓管理者可用Web介面管理MySQL資料庫。 應用程式可透過ODBC或ADO方式,經由使用MyODBC與MySQL資料庫連接。 衍生版本有Drizzle,MariaDB,Percona Server及OurDelta等。 ref: http://zh.wikipedia.org/wiki/MySQL MySQL安裝 centos 6.4 x86_64 安裝,直接使用 yum 系統安裝軟體。 [mtchang@powerful ~]$ sudo yum install mysql-server -y 安裝的套件有的底下幾個 mysql-server 伺服器端的程式 mysql command line 的 mysql 連接工具及一些常用的工具程式 ================================================================================ Package Arch Version Repository Size ================================================================================ ...

早期寫mysql資料庫編碼 latin1 可以配合 mysqldump 修正的方式

還有在用 big5 還有 latin1 編碼的資料庫嗎? 可試著用 mysqldump 配合編碼指定轉換成為 utf8 的格式... * 資料庫編碼問題 在以前 MySQL 預設的語系是 latin1 這語系是給拉丁語系的國家使用的, 但是以前很多開發者沒有去注意這一段都使用這種語系在做 sql 的工作, 但有時候會出現一些問題。 例如:某兩個中文字在一起就會產生亂碼,中間夾各空白就又好了。 現在 Unicode 的環境已經很成熟了, UTF-8 編碼目前也是大家遵循的標準, 但這些以前的資料如果拿出來使用可以指定預設編碼匯出後再匯入到UTF-8標準 編碼內的資料庫,或許就可以把這問題解決。 --default-character-set=latin1 指定預設編碼輸出。 範例:mysqldump with 預設編碼輸出 --default-character-set=latin1 mysqldump post2 -h localhost -u post --password=密碼 --default-character-set=latin1 > post2.sql * dump 出來後請看一下文字檔,記得把表格敘述改成 CHARSET=utf8 再匯到新的表格指定 UTF8 編碼 CREATE TABLE `CONDUCT` ( `班級座號` varchar(9) DEFAULT NULL, `導師評分` decimal(15,5) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; * 編碼請參考:http://dev.mysql.com/doc/refman/5.6/en/charset-connection.html * 為了避免語系的悲劇再次重演,你可以這樣做。在 mysql 系統的 /etc/mysql/my.cnf 檔案加入類似這樣的設定,直接綁定預設為 utf8 [mysqld] default-character-set=utf8 [client] default-character-set=utf8 init_connect='SET NAMES utf8' * 寫程式的時候記得要輸出 mysql_query(...