首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外部表:创建中的VARCHAR,访问参数中的CHAR

外部表:创建中的VARCHAR,访问参数中的CHAR
EN

Database Administration用户
提问于 2019-01-29 16:40:16
回答 1查看 572关注 0票数 0

请考虑这一点,因此质疑UTF-8和外部表。建议的解决方案在CREATE部分中包含VARCHAR2列,但是那些相同的列在访问参数部分中获得CHAR属性。

为什么会有区别?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-01-29 17:05:29

数据库中的数据类型以及由SQL*Loader或ORACLE_LOADER驱动程序使用的数据类型是不同的。

Loader不知道VARCHAR2数据类型。它有一个VARCHAR类型,但该类型是不可移植的,这意味着它依赖于平台。

SQL*加载器数据类型

VARCHAR字段只能在短数据字段INT具有相同长度(以字节为单位)的系统之间加载正确的结果。如果系统之间的字节顺序不同,或者如果VARCHAR字段包含UTF16字符集中的数据,则使用适当的技术来指示长度子字段和数据的字节顺序。数据的字节顺序只是UTF16字符集的一个问题。

SQL*Loader的CHAR类型是可移植的。

可移植数据类型可移植数据类型分为值数据类型和长度值数据类型。可移植值数据类型如下: CHAR Datetime和VARCHARC图形外部数字外部(整数、浮点数、十进制、分区)原始可移植长度值数据类型如下:

使用非便携类型,您可能能够或可能无法在不同的平台上加载数据:

跨不同平台加载数据

当要将在一个平台上创建的数据文件加载到另一个平台上时,数据必须以目标系统可以读取的形式写入。例如,如果源系统有一个使用16个字节的本地浮点表示,而目标系统的浮点数为12个字节,那么目标系统不能直接读取源系统上生成的数据。最好的解决方案是利用数据类型的自动转换,跨Oracle Net数据库链接加载数据。这是建议的方法,只要可行,就意味着SQL*Loader必须在源系统上运行。在本机数据类型中,通常会出现跨平台加载的问题。在某些情况下,可以通过填充零延长字段来避免问题,或者只读取字段的一部分以缩短字段(例如,在使用4字节整数的系统上读取8字节整数时,或者相反)。但是,请注意,不兼容的数据类型实现可能会阻止这一点。如果您不能使用Oracle Net数据库链接,并且在目标系统上运行的SQL*Loader必须访问数据文件,则建议只使用可移植的SQL*Loader数据类型(例如,CHAR、DATE、VARCHARC和数值外部)。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/228376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档