ORACLE配置資訊及觸發器

來源:互聯網
上載者:User

標籤:www.   配置資訊   div   搜尋   proc   gbk   iat   開啟   disable   

系統內容變數

變數名稱: NLS_LANG
變數值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK



CREATE OR REPLACE PROCEDURE "TLGL"."TLGB" 
AS 
BEGIN
execute immediate ‘ALTER TRIGGER XG ENABLE‘;
END; --關閉所有觸發器 
alter table tbname disable trigger all--開啟所有觸發器 
alter table tbname enable trigger all 如果是啟停指定觸發器,則將all改為觸發器名 ALTER TRIGGER TRIGGER_name DISABLE; ALTER TRIGGER TRIGGER_name ENABLE;

在用cx_oracle串連oracle資料庫進行匯入的時候出現了很奇怪的問題:

oracle伺服器NLS_CHARACTERSET為AL32UTF8,要進行匯入的檔案編碼也是utf8,而用cursor.executemany進行匯入的時候出現了錯誤:‘gbk‘ codec can‘t encode character u‘\ue85f‘ in position 1: illegal multibyte sequence。

有點莫名其妙,從utf8到utf8也會經過字元編碼轉換?

用bing搜尋了一下,發現有人遇到同樣的問題:http://www.thecodingforums.com/threads/cx_oracle-and-utf8.354728/。發現是環境變數nls_lang的問題,於是將nls_lang設定為’AMERICAN_AMERICA.AL32UTF8‘,

應該‘SIMPLIFIED CHINESE_CHINA.AL32UTF8’也行,不過沒試過。設定之後匯入就沒問題了。設定方法可以直接改環境變數,也可以通過python來改:os.environ[‘nls_lang‘] = ‘AMERICAN_AMERICA.AL32UTF8‘ 。

 另外,如果資料庫編碼是gbk,而檔案字元編碼是utf8,由於utf8中的某些字元在gbk中沒有,在編碼轉換的時候也會導致出錯。解決辦法是手動進行編碼轉換,如:value = value.decode(‘UTF-8‘).encode(‘GBK‘, ‘replace‘) 或者value = value.decode(‘UTF-8‘).encode(‘GBK‘, ‘ignore‘)

 

ORACLE配置資訊及觸發器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.