示例:
Table_A
id | not null | number(10)
name | not null | varchar(50)
photo | not null | blob
如果我想从表photo
A
的blob数据
我的表包含大约2,000,000行,因此执行UPDATE
语句会耗费大量时间。
我的方法:
CREATE DIRECTORY EXT_DIR as '/tmp/TEST/';
CREATE TABLE TABLE_TEMP
(
ID varchar2(10),
NAME varchar2(50)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY EXT_DIR
ACCESS PARAMETERS
(
RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ','
MISSING FIELD VALUES ARE NULL
(
ID char(10),
NAME char(50)
)
)
LOCATION ('TABLE_A.csv') ---dump taken from TABLE_A
)
REJECT LIMIT UNLIMITED;
/
INSERT INTO TABLE_A(ID,NAME) SELECT ID,NAME FROM TABLE_TEMP;
我的方法是将表数据转换为CSV并使用EXTERNAL TABLE将CSV数据插入到我的表中,但由于CSV只能存储多达1048576行,因此寻找不同的方法。
答案 0 :(得分:2)
首先,对于回答类似delete col from table
的人来说,oracle中没有这样的语句来删除列值,delete
语句会删除行。请在回答之前确保它与问题相对应。
你应该更新表格
update table_a set photo = null
,
但是,由于列定义了not null
。
答案 1 :(得分:1)
如果要删除照片列的某些行,则必须先修改该表
ALTER TABLE TableA modify (photo NULL);
然后你可以"擦除"一些数据将其设置为null:
UPDATE TableA SET photo = null
如果要删除列,则
ALTER TABLE TableA DROP photo;
答案 2 :(得分:-1)
DELETE photo FROM [Table A]
试试这个