首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从具有长列的表中使用CTAS?甚至不能使用。在这里移动表空间

如何从具有长列的表中使用CTAS?甚至不能使用。在这里移动表空间
EN

Stack Overflow用户
提问于 2017-01-05 12:19:10
回答 1查看 1.2K关注 0票数 0

我有张桌子

代码语言:javascript
复制
acct_log  (
date_created date,
log_desc  long
log_key number  primary key)

在甲骨文12c。

这个表已增长到45 GB。我使用date_created来清除它--每天对7天以上的行进行清除。

这个脚本在过去的21天里失败了,现在已经积累了太多行。

我试图使用alter table acct_log move命令,但它在LONG列上失败了。这对所有其他类型的列都适用于任何表,但不会很长。

有人能帮我吗?我甚至不能用CTAS创建临时表,因为它失败了。

代码语言:javascript
复制
ERROR at line 1:
ORA-00997: illegal use of LONG datatype
EN

回答 1

Stack Overflow用户

发布于 2017-01-05 16:55:16

甲骨文有一个专门针对这个问题的工具:to_lob

TO_LOB将列long_column中的长或长原始值转换为LOB值。只能将此函数应用于长或长的原始列,也只能应用于INSERT语句中子查询的选择列表中。

示例

代码语言:javascript
复制
create table foo (a number, b date, c long);

insert into foo values(1, sysdate - 1, 'Parfümök százai, virágok álmai');
insert into foo values(2, sysdate - 2, 'Édeskés, kesernyés, mézédes felejtés');
insert into foo values(3, sysdate - 3, 'Rózsa és leander, karcsú kis üveggel, oh elkábít');
insert into foo values(4, sysdate - 4, 'Mirha és mandula kis helyre bezárva, orgonák, violák titkos kis fiolák');
insert into foo values(5, sysdate - 5, 'Cseppenként, permetként próbálom egyenként úgy elbódít');

commit;

create table bar as select a, b, to_lob(c) as c from foo;

结果

代码语言:javascript
复制
SQL> desc bar

Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
A                                                  NUMBER
B                                                  DATE
C                                                  CLOB
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41484957

复制
相关文章

相似问题

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