我试图从启用了UTF-8的Oracle数据库假脱机数据并尝试将相同的数据假脱机到txt或cvs.而不是我得到的汉字????.
我知道这个问题早先被问过,但没有给出答案,因此再次重新提出这个问题.
批量程序:
sqlplus snprn/SpotProd_07@SPOTDEV_VM.WORLD @C:\BatchJob\SPOTReport\spotreport.sqlrem sqlplus snprn/SpotProd_07@lprodspot @C:\BatchJob\SPOTReport\spotreportrecovery.sqlrem copy Spot_Item_details*.* C:\BatchJob\SPOTReport /ycopy Spot_Item_details*.* C:\BatchJob\SPOTReport /yrem xcopy Spot_Item_details*.* backup /yrem del Spot_Item_details*.*
sql代码:
SET heading ONSET FeedBACK OFFSET ECHO OFFSET linesIZE 5000SET PAGESIZE 0SET TRims ONSET ARRAYSIZE 5ColUMN extract_date NEW_VALUE _dateSELECT TO_CHAR(SYSDATE,'RRRRMMDD') extract_date FROM DUAL;SPOol D:\SPOT2\BatchJob\SPOTReport\Spot_Item_details_daily_&_Date.txtSelect 'SPOT#'||'^'||'STATUS'||'^'||'APPLY DATE'||'^'||'MANAGER SIGNOFF'||'^'||'SNP OPS SIGNOFF'||'^'||'GP SIGNOFF'||'^'||'DIR SIGNOFF'||'^'||'SCM SIGNOFF'||'^'||'ITEM NO'||'^'||'ISMARTS SKU'||'^'||'MANUFACTURER SKU'||'^'||'COUNTRY'||'^'||'disTRIBUTOR'||'^'||'disTRIBUTOR STD PRICE EX GST'||'^'||'disTRIBUTOR FINAL PRICE EX GST'||'^'||'DELL PRICE EX GST'||'^'||'QTY required'||'^'||'CURRENCY'||'^'||'liCENSE PACKAGE'||'^'||'MSliCENSE'||'^'||'MSSOFTWARE'From Dual;Select distinct SSR_REFNO||'^'||SSR_STATUS||'^'||SSR_APPLY_DATE||'^'||TO_CHAR(SSR_MAN_DATE,'DDMONRRRR HH24:MI:SS')||'^'||TO_CHAR(SSR_ORT_DATE,'DDMONRRRR HH24:MI:SS')||'^'||TO_CHAR(SSR_GP_DATE,'DDMONRRRR HH24:MI:SS')||'^'||TO_CHAR(SSR_DIR_DATE,'DDMONRRRR HH24:MI:SS')||'^'||TO_CHAR(SSR_SCM_DATE,'DDMONRRRR HH24:MI:SS')||'^'||REPLACE(SSR_ITEM_NO,chr(10),'')||'^'||REPLACE(SSR_ISMARTS_SKU,'')||'^'||REPLACE(SSR_MANUFACTURER_SKU,'')||'^'||REPLACE(SSR_COUNTRY,'')||'^'||REPLACE(SSR_disTRIBUTOR,'')||'^'||REPLACE(SSR_MANF_STD_COST_EX_GST,'')||'^'||REPLACE(SSR_MANF_COST_EX_GST,'')||'^'||REPLACE(SSR_DELL_PRICE_EX_GST,'')||'^'||REPLACE(SSR_QTY_required,'')||'^'||REPLACE(SSR_CURRENCY,'')||'^'||REPLACE(SSR_liCENSE_PACKAGE,'')||'^'||REPLACE(SSR_MSliCENSE,'')||'^'||REPLACE(SSR_MSSOFTWARE,'')From SPOT_SNP_REPORtWhere SSR_REFNO like 'FSPOT-%' and SSR_ITEM_NO <100000;SPOol OFFexit;解决方法 每当客户端程序(例如sqlplus)连接到数据库时,它就会告诉数据库它正在使用哪些字符集.某些环境可能具有非常有限的字符集并且使用类似US7ASCII的东西,因此它们不会得到任何可能使它们烦恼的东西.
正如您在以下示例中所看到的,查询输出的内容取决于客户端的NLS_LANG设置.
C:\>set NLS_LANG=.US7ASCIIC:\>sqlplus ???/???@xesql*Plus: Release 10.2.0.1.0 - Production on Wed Nov 3 09:31:32 2010> select chr(193) from dual;C-?> quitC:\>set NLS_LANG=.AL32UTF8C:\>sqlplus ???/???@xesql*Plus: Release 10.2.0.1.0 - Production on Wed Nov 3 09:31:49 2010> select chr(193) from dual;C-┴
如果您的客户端是windows,请尝试以上 *** 作.如果它是unix(ish)平台,请尝试
export NLS_LANG=.AL32UTF8总结
以上是内存溢出为你收集整理的如何将Oracle数据库中的UTF-8格式数据转换为文本文件全部内容,希望文章能够帮你解决如何将Oracle数据库中的UTF-8格式数据转换为文本文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)