`
Donald_Draper
  • 浏览: 978878 次
社区版块
存档分类
最新评论

oracle字段类型转换的处理

阅读更多
Oracle的CLOB类型数据处理:http://donald-draper.iteye.com/admin/blogs/2335296
Oracle中表列由VARCHAR2类型改成CLOB :http://blog.csdn.net/jssg_tzw/article/details/40829867
mysql中把一个表的数据批量导入另一个表中:http://blog.csdn.net/evan_endian/article/details/8652528
Oracle中表列由VARCHAR2类型改成CLOB文章中方式是,
假设要将test的表中col字段(VARCHAR2),改为CLOB,
以下所有测试在navicat环境下:表名带引号,在SQLPLUS,则不用,注意区分
首先将添加temp字段
alter table "test" add  "temp" CLOB;
UPDATE "test"  SET "temp" = "col";

当表字段顺序无关时,则删除指定的列,
alter table "test" drop column "col";

然后修改temp字段为col
alter table "test" RENAME COLUMN "temp" TO "col";

这种方案,是在字段顺序无关,当与顺序有关,且col字段为主键不能为null,这时怎么办呢?


假设原表为product,product含有一个字段为fallTime(DATE),且为主键,不为空,现需要将fallTime字段改为
varchar类型;
如果直接导出SQL脚本,修改表结构,及数据,任务繁琐,同时SQL脚本中的,记录往往是分条insert
实例如下:
insert into product ....;
insert into product ....;
.....
这种脚本跑的相当慢,有人建议,将insert放在Begin和commit之间一次提交,
而不是insert一条记录,要commit一次;还有人建议修改为,如下形式:
insert into product values XXX,YYY,......
这两种方式我没用,你可以试试;


如果用临时字段转换,因为要修改字段fallTime的类型,而fallTime又是主键,不能直接修改fallTime字段类型
,这是因为修改fallTime字段,fallTime列值必须为null,而fallTime又是主键,又不能为空,这个如何是好?

下面将介绍一种方案:
首先将导出product结构,包括主键,索引,表注释和字段注释等信息,修改表结构,将fallTime的DATE类型修改为
varchar,根据修改后的表结构信息创建test表,注意test表中的fallTime字段为varchar
1.在test表中添加临时转化字段:
alter table "test" add  "temp" varchar2(10);


2.然后将product的数据导入到test中:
INSERT INTO "test" SELECT t.*,"TO_CHAR"(t.fallTime,'YYYY-MM-DD') FROM product t;


3.如果fallTime可以为null则执行下面语句:
UPDATE "test"  SET "fallTime" = NULL;
UPDATE "test"  SET "fallTime" = "temp";

不能为空则执行下面语句:
UPDATE "test"  SET "fallTime" = "temp";


4.然后删除product,删除test的temp列:
alter table "test" drop column "temp";


5.重名test为product即可。
其中1,2的另一种方法:
先保证表结构相同,先插入数据
INSERT INTO "test" SELECT t.* FROM product t;

在添加列
alter table "test" add  "temp" varchar2(10);

再更新列
UPDATE product SET "temp" = "TO_CHAR"(fallTime,'YYYY-MM-DD');

总结:
针对列顺序无关的,则直接新建临时字段,删除先前字段,重名临时字段即可;对于字段顺序有关,且字段不能为空的,copy表结构,并修改需要更改的字段的类型,新建临时字段,将需要转换的字段数据插入到临时字段,然后将临时字段,update and set到需要更改类型字段,删除临时字段,修改表名,即可。

0
1
分享到:
评论

相关推荐

    Oracle_Mysql_Sqlserver字段类型转换参考

    Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_...

    ORACLE 自动类型转换

    本文将深入探讨“ORACLE 自动类型转换”这一主题,以帮助理解Oracle如何处理不同类型的数据以及可能遇到的问题。 Oracle数据库支持多种数据类型,如数值型(NUMBER、INTEGER、BINARY_INTEGER等)、字符型(VARCHAR2...

    Oracle数据库字段类型详解

    ### Oracle数据库字段类型详解 #### 字符串类型 **Char** `CHAR` 数据类型用于存储固定长度的字符值。它可以包含1至2000个字符。如果没有明确规定长度,默认长度为1。当向`CHAR` 类型的字段赋值时,如果实际值...

    ORACLE中CLOB字段转String类型

    在Oracle数据库中,将CLOB字段转换为字符串类型是常见需求之一。通过使用`DBMS_LOB`包、内置函数如`SUBSTR`以及`TO_CHAR`,可以有效地实现这一目标。此外,还需注意性能优化措施,例如分段读取和合理设计查询逻辑,...

    KETTLE数据库转换类型例子

    同时,Kettle支持自定义转换逻辑,可以应对各种复杂的数据清洗和转换需求,比如数据类型转换、缺失值处理、数据验证等。这种灵活性和强大的功能使得Kettle成为数据工程师在数据集成项目中的首选工具之一。

    解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    通过对char类型字段的特殊处理,可以确保mybatis框架对Oracle数据库的查询操作的正确性。 知识点: * Oracle数据库中char类型字段的特性 * 使用trim()函数去掉char类型字段的空格 * 将char类型字段改为varchar2...

    oracle(blob转换为clob)

    通过上述步骤,我们可以有效地在Oracle数据库中将BLOB类型的数据转换为CLOB类型,这对于处理大型文本数据尤其有用。需要注意的是,这种转换可能会涉及大量的I/O操作,因此在处理大数据量时应考虑性能优化,例如分批...

    OracleTOMysql 转换工具

    5. **数据类型转换**:由于Oracle和MySQL支持的数据类型有所不同,转换工具需要能够识别并自动转换这些类型,如NUMBER在Oracle中对应MySQL的DECIMAL或FLOAT。 6. **表结构转换**:转换工具应能识别Oracle的表结构,...

    sql server中的image类型的数据导出到oracle的clob字段中

    SQL Server 中 Image 类型数据导出到 Oracle 的 CLOB 字段中 在进行数据库迁移或数据交换时,需要将不同数据库管理系统之间的数据类型进行转换。在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 ...

    Oracle将汉字转换为拼音的方法

    在Oracle数据库中,将汉字转换为拼音是一项实用的功能,尤其对于数据分析、文本处理或构建具有汉字支持的应用程序来说。Oracle提供了内置的函数和工具来实现这个目标,虽然它可能无法处理极少数的生僻字,但对大部分...

    fckeditor配置和oracle大字段类型处理

    以上就是关于FCKeditor配置和Oracle大字段类型处理的详细讲解。通过正确的配置和编程,你可以顺利地在Oracle数据库中存储和管理由FCKeditor生成的富文本内容。希望这些信息能帮助到遇到相同问题的朋友们。

    oracle非数字合计,将字段中含有汉子的数据自动转换为 数字0

    在Oracle数据库环境中,有时我们需要处理包含非数字字符的字段,并将其转换为数字进行计算或统计。根据提供的文件信息,本文将详细介绍如何实现“oracle非数字合计”,即将字段中含有汉字或其他非数字字符的数据自动...

    sqlserver-oracle 数据类型对照

    本文将详细比较SQL Server和Oracle数据库之间的数据类型对应以及常用函数的转换。 首先,我们来看SQL Server和Oracle的数据类型对照: 1. **数值类型**: - `bigint`在SQL Server中对应Oracle的`NUMBER(19)`,...

    Oracle与DB2数据类型分类对应说明

    然而,在实际应用中,我们经常需要在 Oracle 和 DB2 之间进行数据类型的转换和对应,这就需要我们对 Oracle 和 DB2 的数据类型有深入的了解。 在本文中,我们将对 Oracle 和 DB2 的数据类型进行分类和对应说明,...

    oracle中的BLOB(照片)转换到mysql中

    本篇将详细讲解如何在Oracle与MySQL之间进行BLOB类型的转换,特别是针对照片的处理。 首先,让我们了解BLOB类型。BLOB是一种可以存储大量二进制数据的对象,分为四种子类型:BLOB、CLOB、NCLOB和BFILE。在Oracle中...

    如何:让Oracle表及字段显示为区分大小写

    Oracle数据库对于标识符(如表名、列名等)的处理有其独特之处。当没有使用双引号来定义标识符时,Oracle默认将这些标识符转换为大写,并存储为大写形式。然而,通过使用双引号(`"`),可以明确地告诉Oracle保持...

    GP数据库表结构转mysql库、oracle库 varchar类型字段长度批量处理excel_MYSQL_oracle_数据库

    本文将深入探讨在不同数据库系统间进行表结构转换,特别是针对varchar类型的字段长度处理,这在Oracle到Greenplum(GP)、Oracle到MySQL的数据迁移过程中尤为重要。 首先,让我们关注标题提到的“GP数据库表结构转...

    Oracle Sql语句转换成Mysql Sql语句

    1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在MySQL中可能需要转换为DECIMAL、TEXT或BLOB。例如,Oracle的NUMBER可以转换为MySQL的DECIMAL或FLOAT,LONG可以转换为TEXT。 2. **分页查询**:Oracle...

Global site tag (gtag.js) - Google Analytics