oracle对有数据的列进行数据类型变更的方法

两种方法:

方法一,通过备份表

    1.建立备份表

    create table t_bak as select * from t

    2.删除原表数据后更改相应的列数据类型

    delete from t

    3.将备份表中的数据导入原表

    insert into t select * from t_bak

    4.删除备份表

方法二,通过备份列

    1.修改原列名为col_tmp

    2.建立备份列col(需要更改的数据类型且为可空)

    3.将原列的数据更新到备份列

    update t set col=trim(col_tmp); 

    4.删除原列col_tmp

时间: 2024-10-09 15:03:15

oracle对有数据的列进行数据类型变更的方法的相关文章

修改Oracle中的某一带有数据的列的数据类型

因为昨天去别的公司维护数据,到了之后导完数据才发现,表中的要素内容这一列是空的,刚开始我以为是数据有问题,后来才发现表中的数据的类型是CLOB类型的,而如果直接拿EXCLE中的数据是类型不匹配的,这时候就问了领导,领导说把CLOB类型改成varchar2类型的,不多说了上步骤: 因为该列中已经存有数据,所以需要如下: *修改原字段名*/ALTER TABLE 表名 RENAME COLUMN 字段名 TO 字段名1;/*添加一个和原字段同名的字段*/ALTER TABLE 表名 ADD 字段名 

Oracle误删除表数据后的恢复具体解释

測试环境: SYSTEM:IBM AIX 5L                         Oracle Version:10gR2 1. undo_retention參数的查询与改动 使用show parameter undo命令查看当前的数据库參数undo_retention设置. 显演示样例如以下: SQL> show parameter undo NAME                                 TYPE        VALUE --------------

关于EXP-00056: 遇到 ORACLE 错误 1455 ORA-01455: 转换列溢出整数数据类型 EXP-00000: 导出终止失败 的问题解决方法整理

在客户端用exp导出数据库的时候,遇到如下情况 ... .... ...... .. 正在导出同义词 . 正在导出视图 EXP-00056: 遇到 ORACLE 错误 1455 ORA-01455: 转换列溢出整数数据类型 EXP-00000: 导出终止失败 在导完表.同义词.视图后出现EXP-00056: 遇到 ORACLE 错误 1455 这样的问题我连续遇到两次. 我查过网上许多帖子,解决方法都不一样: 第一种: SQL> connect / as sysdba SQL> @catmet

Oracle数据更新、事务处理、数据伪列

一.数据的更新操作 DML操作语法之中,除了查询之外还有数据的库的更新操作,数据的更新操作主要指的是:增加.修改.删除数据,但是考虑到emp表以后还要继续使用,所以下面先将emp表复制一份,输入如下指令: CREATE TABLE myemp AS SELECT * FROM emp; 这种语法是Oracle中支持的操作,其他数据库不一样. 1.数据增加 如果现在要想实现数据的增加操作,则可以使用如下的语法完成: INSERT INTO 表名称 [(字段1,字段2,-)] VALUES(值1,值

查看oracle表中列的数据类型

一. SQLPLUS中,直接用 DESC[ribe] tablename 即可. 二.在外部应用程序调用查看ORACLE中的表结构时,只能用下面的语句代替: 1.看字段名与数据类型 select * from cols WHERE TABLE_name=upper('table_name'); --(user_tab_columns缩写cols) 2.查看全部列 select * from user_tab_columns where table_name = upper(‘tablename’

Asp.net 修改已有数据的DataTable中某列的数据类型

DataTable dt_PI = new DataTable(); //克隆表结构 dt_PI = ds.Tables[0].Clone(); dt_PI.Columns["FLTFullPercentage"].DataType = typeof(String);//修改[满柜百分比]列的数据类型 foreach (DataRow row in ds.Tables[0].Rows) { DataRow rowNew = dt_PI.NewRow(); foreach (DataCo

修改Oracle数据库表的主键对应列的数据类型

我们产品从SPC100升级到SPC200的时候,由于数据库表列的数据类型发生了改变,需要写SQL脚本,完成数据库的升级.需要将表T_MOBILE_INDVCONFIG的主键列id从varchar2(100),改成number(17).可以参考如下SQL: --将原来的ID列重命名为bak_id ALTER TABLE T_MOBILE_INDVCONFIG RENAME COLUMN id TO bak_ID; --添加一个与原来的列一样名字的列 ALTER TABLE T_MOBILE_IND

[转]Oracle DB 移动数据

? 描述移动数据的方式 ? 创建和使用目录对象 ? 使用SQL*Loader 加载非Oracle DB(或用户文件)中的数据 ? 使用外部表并通过与平台无关的文件移动数据 ? 说明Oracle 数据泵的一般体系结构 ? 使用数据泵的导出和导入实用程序在Oracle DB 之间移动数据 移动数据:一般体系结构 移动数据:一般体系结构 主要功能组件: ? DBMS_DATAPUMP:包括高速导出与导入实用程序的API,可用于成批地移动数据和元数据. ? 直接路径API (DPAPI):Oracle

MyBatis在Oracle中插入数据并返回主键的问题解决

引言:  在MyBatis中,希望在Oracle中插入数据之时,同时返回主键值,而非插入的条数... 环境:MyBatis 3.2 , Oracle, Spring 3.2   SQL Snippet in XML Configuration: <insert id="insertSelective" parameterType="com.jxxx.p2pp.model.UUserInfo"> <selectKey resultType="