[20120910]建立包含long类型的表.txt

需要往一个表里面append一些数据,而表内有long 字段。处理还真麻烦,记录一下。
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> create table t (id number,pic long);
Table created.
SQL> insert into t values (1,'aaaaaaaaaaaaaaaa');
1 row created.
SQL> create table t1 as select * from t;
create table t1 as select * from t
                          *
ERROR at line 1:
ORA-00997: illegal use of LONG datatype
SQL> create table t1 (id number,pic long);
Table created.

SQL> insert into  t1  select * from t;
insert into  t1  select * from t
                        *
ERROR at line 1:
ORA-00997: illegal use of LONG datatype
--看来含有LONG的字段处理起来很麻烦。 当然方法很多,看了一些blog,发现最简单的是使用sqlplus带的copy命令,
--可以实现。记录一下。俺以前经常用,现在差不多忘记了!!
--参考链接如下:http://www.dbaroad.me/archives/2008/11/long-type-usage.htmlSQL> help copy
 COPY
 ----
 Copies data from a query to a table in the same or another
 database. COPY supports CHAR, DATE, LONG, NUMBER and VARCHAR2.
 COPY {FROM database | TO database | FROM database TO database}
            {APPEND|CREATE|INSERT|REPLACE} destination_table
            [(column, column, column, ...)] USING query
 where database has the following syntax:
     username[/password]@connect_identifier
SQL> copy from scott/xyzxyz@192.168.200.56/test.com to scott/xyzxyz@192.168.200.56/test.com append t1 using select * from t;
Array fetch/bind size is 200. (arraysize is 200)
Will commit when done. (copycommit is 0)
Maximum long size is 20000000. (long is 20000000)
   1 rows selected from scott@192.168.200.56/test.com.
   1 rows inserted into T1.
   1 rows committed into T1 at scott@192.168.200.56/test.com.

SQL> set long 100
SQL> select * from t1;
        ID PIC
---------- -----------------
         1 aaaaaaaaaaaaaaaa

SQL> copy from scott/xyzxyz@192.168.200.56/test.com to scott/xyzxyz@192.168.200.56/test.com create t2 using select * from t;
Array fetch/bind size is 200. (arraysize is 200)
Will commit when done. (copycommit is 0)
Maximum long size is 100. (long is 100)
Table T2 created.
   1 rows selected from scott@192.168.200.56/test.com.
   1 rows inserted into T2.
   1 rows committed into T2 at scott@192.168.200.56/test.com.

SQL> desc t2;
Name   Null?    Type
------ -------- ------------
ID              NUMBER(38)
PIC             LONG
SQL> select * from t2;
        ID PIC
---------- ----------------
         1 aaaaaaaaaaaaaaaa

--另外不要设置long参数太小,否则会被截断!
SQL> set long 5
SQL> copy from scott/xyzxyz@192.168.200.56/test.com to scott/xyzxyz@192.168.200.56/test.com insert t2 using select * from t;
Array fetch/bind size is 200. (arraysize is 200)
Will commit when done. (copycommit is 0)
Maximum long size is 5. (long is 5)
   1 rows selected from scott@192.168.200.56/test.com.
   1 rows inserted into T2.
   1 rows committed into T2 at scott@192.168.200.56/test.com.
SQL> set long 50
SQL> select * from t2;
        ID PIC
---------- --------------------------------------------------
         1 aaaaaaaaaaaaaaaa
         1 aaaaa
				
时间: 2024-07-30 10:55:48

[20120910]建立包含long类型的表.txt的相关文章

10g包含同名触发器的表执行PURGE TABLE出错

[20150908]10g包含同名触发器的表执行PURGE TABLE出错.txt --昨天看杨大师的帖子http://blog.itpub.net/4227/viewspace-68964/,提到在10g同名触发器的表执行PURGE TABLE出错.自己也重复测试看看: 1.建立测试环境: SCOTT@test> @ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -

[20151231]主外键与空表.txt

[20151231]主外键与空表.txt --主外键的测试例子很多,今天做一个特别的,外部键表为空,也会出现阻塞吗?测试看看. 1.建立环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- -------------------------------------------------------

[20150918]禁止用户truncate以及drop表.txt

[20150918]禁止用户truncate以及drop表.txt --一个需求要求禁止用户truncate以及drop表,实际上很简单仅仅建立一个触发器就ok了. CREATE OR REPLACE TRIGGER SYS.tri_prevent_drop_truncate    BEFORE TRUNCATE OR DROP ON DATABASE BEGIN    IF ora_dict_obj_type = 'TABLE' AND ora_dict_obj_owner = 'SCOTT'

[20161002]impdp导入空表.txt

[20161002]impdp导入空表.txt --业务需求要求建立新的测试库,由于磁盘空间有限,要求几个大表导入空表,11g支持段延迟提交,即使表init很大也不会出现空间问题. --全表的数据已经通过expdp导出.自己测试一下如何实现: 1.环境: SCOTT@test01p> @ ver1 PORT_STRING          VERSION    BANNER                                                              

[20150115]insert多个表.txt

[20150115]insert多个表.txt --别人给我提出一个问题,要把表拆开2个表,能否快速完成这个工作.还是通过例子来说明: SCOTT@test> @ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- -----------------------------------------------------------------

[20120726]建立约束和使用绑定变量.txt

[20120726]建立约束和使用绑定变量.txt 昨天检查awr报表文件,发现:select condition from cdef$ where rowid=:1这条语句执行次数很高,因为查询的where条件使用rowid=:1,应该不会是用户的程序执行,而是某种递归的调用. 直接在google输入select condition from cdef$ where rowid=:1,发现如下链接:http://jonathanlewis.wordpress.com/2006/12/14/co

包含同名触发器的表PURGE TABLE出错

今天在测试的时候无意中发现了一个10g的小bug.当包含同名触发器的表被放入回收站时,PURGE TABLE会报错. 例子如下: SQL> CREATE TABLE T (ID NUMBER); 表已创建. SQL> CREATE OR REPLACE TRIGGER T BEFORE INSERT ON TFOR EACH ROWBEGINNULL;END;/ 触发器已创建 SQL> DROP TABLE T; 表已删除. SQL> PURGE TABLE T;PURGE TAB

mysql-Mysql带有longblob类型的表,如何实现大量数据批量插入

问题描述 Mysql带有longblob类型的表,如何实现大量数据批量插入 现在需要大量数据插入Mysql中,使用MySqlDataAdapter的Update速度太慢, 想要通过文件导入,把DataTable转成CSV文件,然后导入. 不过表字段中含有longblob类型的字段,这个应该怎么处理. 或者还有没有什么更好的插入方法? 解决方案 linux下批量插入数据到mysqlMySQL插入大量数据调优如何向mysql中插入大量数据

mysql-如何建立评论回复功能的表结构?

问题描述 如何建立评论回复功能的表结构? 例如图中的的回复,我在数据库里应该建立哪些字段呢? 求大神科普~ 解决方案 一般要有 主题(回答)的外键.回复者.回复时间.回复内容.序号.