- PR -

Long型のinsertについて

1
投稿者投稿内容
oja
会議室デビュー日: 2005/11/14
投稿数: 2
投稿日時: 2005-11-14 10:16
Oracleの同一DB内にあるテーブルからテーブルへのinsertをするために下記のようなinsert文を使用したところ。
テーブル項目にnumber型とvarchar2型とdate型のみの場合は成功したのですが、
Long型が含まれている場合は、「LONGデータ型は使用できません」とエラーになってしまいました。
Long型項目がテーブルに含まれている場合は、どのようにしたらinsertすることができるでしょうか?

<実行insert文>
insert into table2 select * from table1;
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2005-11-14 11:56
環境は Unix or Linux、Bシェルを前提にかいていますが、これでできると思います。

$ exp scott/tiger file=exp.dmp tables=table1
$ sqlplus scott/tiger

SQL> DROP TABLE table1;
SQL> CREATE TABLE table1; -- table2 の内容で

$ imp scott/tiger file=exp.dmp tables=table1
$ sqlplus scott/tiger

SQL> RENAME table1 TO table2;
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-11-14 13:03
テーブルの列定義が限定されるので
解決にはならないかもしれませんが・・・・

SELECTするテーブル(TEST1)のcol1がLONG型の場合、
INSERTされるテーブル(TEST2)の対応する列col1をCLOBで作成すれば
以下のようなSQLでできます。

INSERT INTO TEST2 SELECT TO_LOB(COL1) FROM TEST1
oja
会議室デビュー日: 2005/11/14
投稿数: 2
投稿日時: 2005-11-14 15:40
あんとれさん、夏椰さん、ありがとうございました。
table1はtable2を作成後、必要がなくなることになったために、RENAMEすることにしました。
いろいろとありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)