加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 站长百科 > 正文

如何将Oracle数据库中的UTF-8格式数据转换为文本文件

发布时间:2021-04-01 14:00:42 所属栏目:站长百科 来源:网络整理
导读:如何将UTF-8格式的数据从Oracle数据库转换为文本文件,所有UTF-8字符都正确输出,例如中文字符. 我试图从启用了UTF-8的Oracle数据库假脱机数据并尝试将相同的数据假脱机到txt或cvs.而不是我得到的汉字????. 我知道这个问题早先被问过,但没有给出答案,因此再次

如何将UTF-8格式的数据从Oracle数据库转换为文本文件,所有UTF-8字符都正确输出,例如中文字符.

我试图从启用了UTF-8的Oracle数据库假脱机数据并尝试将相同的数据假脱机到txt或cvs.而不是我得到的汉字????.

我知道这个问题早先被问过,但没有给出答案,因此再次重新提出这个问题.

批量程序:

sqlplus snprn/SpotProd_07@SPOTDEV_VM.WORLD @C:BatchJobSPOTReportspotreport.SQL

rem sqlplus snprn/SpotProd_07@lprodspot @C:BatchJobSPOTReportspotreportrecovery.SQL

rem copy Spot_Item_details*.* C:BatchJobSPOTReport /y
copy Spot_Item_details*.* C:BatchJobSPOTReport /y
rem xcopy Spot_Item_details*.* backup /y
rem del Spot_Item_details*.*

SQL代码:

SET HEADING ON
SET FEEDBACK    OFF
SET ECHO    OFF
SET LINESIZE    5000
SET PAGESIZE    0
SET TRIMS   ON
SET ARRAYSIZE   5


COLUMN extract_date NEW_VALUE _date
SELECT TO_CHAR(SYSDATE,'RRRRMMDD') extract_date 
FROM   DUAL;

SPOOL D:SPOT2BatchJobSPOTReportSpot_Item_details_daily_&_Date.txt

Select '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_REPORt
Where SSR_REFNO like 'FSPOT-%' and SSR_ITEM_NO <100000;

SPOOL OFF
exit;

解决方法

每当客户端程序(例如sqlplus)连接到数据库时,它就会告诉数据库它正在使用哪些字符集.某些环境可能具有非常有限的字符集并且使用类似US7ASCII的东西,因此它们不会得到任何可能使它们烦恼的东西.

正如您在以下示例中所看到的,查询输出的内容取决于客户端的NLS_LANG设置.

C:&;set NLS_LANG=.US7ASCII
C:&;sqlplus ???/???@xe

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Nov 3 09:31:32 2010
> select chr(193) from dual;

C
-
?

> quit

C:&;set NLS_LANG=.AL32UTF8
C:&;sqlplus ???/???@xe

SQL*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

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读