博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[20161023]为什么以前可以这样的表.txt
阅读量:6609 次
发布时间:2019-06-24

本文共 2570 字,大约阅读时间需要 8 分钟。

[20161023]为什么以前可以这样的表.txt

--上午看https://oracleblog.org/working-case/ora-01401-impdp-same-character/

CREATE TABLE ASS_ACCHSHT_GREEN_MEMORY

(    "GREEN_ID" VARCHAR2(16) NOT NULL ENABLE,
     "ACCOUNT_ID" VARCHAR2(16) NOT NULL ENABLE,
     "ADDED_BY" VARCHAR2(100),
     "ADDED_DATE" VARCHAR2(16) DEFAULT sysdate 
) ;

报这个错误ORA-01401: inserted value too large for column.我关心的是为什么以前ok。

当我看到执行执行如下一下明白过来。

SCOTT@book> select length(sysdate),lengthb(sysdate) from dual;

LENGTH(SYSDATE) LENGTHB(SYSDATE)

--------------- ----------------
             19               19

--我的测试环境如果
$ echo $NLS_DATE_FORMAT
YYYY-MM-DD HH24:MI:SS

--如果我定义:

$ export NLS_DATE_FORMAT='YYYYMMDDHH24:MI:SS'

SCOTT@book> select length(sysdate),lengthb(sysdate) from dual;

LENGTH(SYSDATE) LENGTHB(SYSDATE)
--------------- ----------------
             16               16

SCOTT@book> CREATE TABLE ASS_ACCHSHT_GREEN_MEMORY

(    "GREEN_ID" VARCHAR2(16) NOT NULL ENABLE,
     "ACCOUNT_ID" VARCHAR2(16) NOT NULL ENABLE,
     "ADDED_BY" VARCHAR2(100),
     "ADDED_DATE" VARCHAR2(16) DEFAULT sysdate
) ;
Table created.

--可以发现这样就ok了。

SCOTT@book> @ &r/ddl scott.ASS_ACCHSHT_GREEN_MEMORY

C100
----------------------------------------------------------------------------------------------------
  CREATE TABLE "SCOTT"."ASS_ACCHSHT_GREEN_MEMORY"
   (    "GREEN_ID" VARCHAR2(16) NOT NULL ENABLE,
        "ACCOUNT_ID" VARCHAR2(16) NOT NULL ENABLE,
        "ADDED_BY" VARCHAR2(100),
        "ADDED_DATE" VARCHAR2(16) DEFAULT sysdate
   ) SEGMENT CREATION DEFERRED
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
  TABLESPACE "USERS" ;

--虽然开发建表很不规范,实际上思路很混乱,数据类型都搞错。

--正确的写法如下:

SCOTT@book> drop table ASS_ACCHSHT_GREEN_MEMORY purge ;

Table dropped.

--退出shell,重新登录:

$ echo $NLS_DATE_FORMAT

YYYY-MM-DD HH24:MI:SS

SCOTT@book> select length(sysdate),lengthb(sysdate) from dual;

LENGTH(SYSDATE) LENGTHB(SYSDATE)
--------------- ----------------
             19               19

SCOTT@book> CREATE TABLE ASS_ACCHSHT_GREEN_MEMORY

(    "GREEN_ID" VARCHAR2(16) NOT NULL ENABLE,
     "ACCOUNT_ID" VARCHAR2(16) NOT NULL ENABLE,
     "ADDED_BY" VARCHAR2(100),
     "ADDED_DATE" VARCHAR2(16) DEFAULT to_char(sysdate,'YYYYMMDDHH24MISS')
) ;
Table created.

SCOTT@book> insert into ASS_ACCHSHT_GREEN_MEMORY(green_id ,account_id,added_by) values ('1','2','3');

1 row created.

SCOTT@book> commit ;

Commit complete.

SCOTT@book> select * from ASS_ACCHSHT_GREEN_MEMORY;

GREEN_ID         ACCOUNT_ID       ADDED_BY   ADDED_DATE
---------------- ---------------- ---------- ----------------
1                2                3          20161023100908
--补充正常数据类型应该选择date:
CREATE TABLE ASS_ACCHSHT_GREEN_MEMORY
(    "GREEN_ID" VARCHAR2(16) NOT NULL ENABLE,
     "ACCOUNT_ID" VARCHAR2(16) NOT NULL ENABLE,
     "ADDED_BY" VARCHAR2(100),
     "ADDED_DATE" date DEFAULT sysdate
) ;

转载地址:http://wesso.baihongyu.com/

你可能感兴趣的文章
第六篇 VIM你值得拥有!
查看>>
项目管理学习笔记之八.课程总结
查看>>
setjmp与longjmp的分析
查看>>
generate ascii table
查看>>
2013吉林通化邀请赛 1005 GCD and LCM
查看>>
高淇java300集JAVA常用类作业
查看>>
<Linux命令行学习 第一节> CentOS在虚拟机的安装
查看>>
无Paper不论文
查看>>
mysql设置字符集CHARACTER SET
查看>>
redis 系列15 数据对象的(类型检查,内存回收,对象共享)和数据库切换
查看>>
log框架集成
查看>>
python命令行下安装redis客户端
查看>>
如何在Oracle中复制表结构和表数据
查看>>
[河南省ACM省赛-第四届] 序号互换 (nyoj 303)
查看>>
3 Oracle 32位客户端安装及arcgis连接
查看>>
[MFC] MFC编译程序,缺少MFC动态链接库的解决
查看>>
Sticker.js – 帮助你在网站中加入贴纸效果
查看>>
欧拉路与欧拉回路的性质
查看>>
iOS之UI--关于modal
查看>>
各种U启网启什么的都是浮云
查看>>