1.sql腳本直接能執行但是以sql文件不能執行
sql正常,由txt轉換為sql文件后,數據庫執行報錯,解決辦法是將sql文件中數據取出放到新文件中,新文件保存時直接以sql格式保存。
2.亂碼問題
1.如果導入到plsql中顯示亂碼,首先查看sql的存儲格式,修改成utf-8
2.查看服務器端編碼—
select userenv('language') from dual;
我實際查到的結果為: SIMPLIFIED CHINESE_CHINA.ZHS16GBK
(AMERICAN_AMERICA.AL32UTF8)這個也是常用的 AMERICAN_AMERICA.ZHS16GBK
如果不正確的話設置方法:----在oracle的數據上去執行的
[oracle@ORACLE ~]$ sqlplus /nolog
conn /as sysdba;
select userenv('language') from dual;
SHUTDOWN IMMEDIATE
STARTUP MOUNT
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SHUTDOWN IMMEDIATE;
STARTUP;
查看一下是否修改過來
select userenv('language') from dual;
3.客戶端
執行語句 select * from V$NLS_PARAMETERS
查看第一行中PARAMETER項中為NLS_LANGUAGE 對應的VALUE項中是否和第一步得到的值一樣。
或者途中的NLS_LANGUAGE和NLS_CHARACTERSET中的value的值加到一起和服務器中額編碼是否一致。
如果不是,需要設置環境變量.或者修改注冊表 regedit
NLS_LANG
否則PLSQL客戶端使用的編碼和服務器端編碼不一致,插入中文時就會出現亂碼.
2.Unix/Linux環境,查看和修改NLS_LANG變量的方法
1)查看方法,在oracle用戶下使用env命令獲得系統的環境變量列表,然后使用grep命令定位到“NLS_LANG”內容
$ env | grep NLS_LANG
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
2)修改方法:使用export命令設置該環境變量
$ NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
$ export NLS_LANG
很全的知識
https://www.2cto.com/database/201111/111388.html