Oracle SQL Developer 日期匯出格式問題

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInEmail this to someonePrint this page

Oracle SQL Developer 預設的匯出日期格式會因為作業系統的語系而有所不同,
因此在輸出的SQL若使用SQLPLUS*執行,會發生日期格式錯誤。
若此時貿然使用Shell Script執行大量SQL匯入時,鐵定會吞下一堆ERROR!
(SQL Developer執行正常,因為有自動轉換的機制,但SQLPLUS*不會提供這麼好的服務)

環境描述:

  • 資料庫環境:Oracle Database Express Edition 11g Release 2 (CentOS 6.4 繁體中文語系)
  • Client端環境:Oracle SQL Developer 3.2 / putty (Windows 7 繁體中文版)

模擬案發經過
以一個測試用的Table為例,長這樣:

00001

先不要管人物名稱,如果要使用Oracle SQL Developer將這張Table匯出,
要先選擇 選單>工具>資料庫匯出…,然後彈出下圖,將語系設定為UTF-8,一路下一步到底。

00002

結果匯出的SQL檔,資料插入的部份長這樣:

這時候登入Oracle,執行以上SQL敘述句,結果…

日期格式不對,但相同的敘述句貼回 Oracle SQL Developer 卻可以正常執行,真是黑心啊!

解決方法

研判應該是因為SQLPLUS無法辨識中文的日期格式,
此時最簡單的解決方法,就是用正確的設定重新匯製SQL。

首先,到 選單>工具>偏好設定,開啟偏好設定視窗。

00003

然後到 資料庫>NLS,可以看到日期的格式與剛剛匯出的SQL日期格式相同。

00004

將 DD-MON-RR HH.MI.SSXFF AM 改成通用格式 YYYY-MM-DD HH24:MI:SS.XFF AM
按確定,重複剛剛的SQL匯出程序。

00005

變更設定後的匯出結果中,產生的INSERT語法如下:

用putty登入SQLPLUS測試:

大功告成!

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInEmail this to someonePrint this page

Leave a Reply

你的電子郵件位址並不會被公開。 必要欄位標記為 *