使用 Oracle 转移数据库表的技巧(oracle转移表数据)
本文介绍使用Oracle 对数据库表进行转移的技巧和方法。将数据库表转移有多种方法,本文涉及的具体包括使用SQL*Plus INSERT语句,使用Oracle的CREATE TABLE语句,以及使用Oracle的Data Pump功能转移数据库表等。
## 一、使用SQL*Plus INSERT语句
SQL*Plus INSERT语句可以将现有表中的数据转移到另一个表中,在使用SQL*Plus INSERT语句时可以采用以下技巧:
(1)INSERT语句允许指定插入范围,即只将特定查询条件匹配的行加入转移表。 例:
INSERT INTO TABLE new (ID, NAME, AGE)
SELECT ID, NAME, AGE
FROM old
WHERE SEX = ‘female’;
(2)INSERT语句可以利用Oracle的系统变量ROWNUM,实现指定行数转移。 例:
INSERT INTO TABLE new (ID, NAME, AGE)
SELECT * FROM (
SELECT ID, NAME, AGE
FROM old
ORDER BY AGE DESC
)
WHERE ROWNUM
(3)可以使用【BULK COLLECT】语句,将一定数量的行加入转移表,减少表访问次数。 例:
DECLARE
TYPE T_EMPLOYEE IS TABLE OF EMPLOYEE%ROWTYPE
INDEX BY BINARY_INTEGER;
V_IDS T_EMPLOYEE;
BEGIN
SELECT * BULK COLLECT INTO V_IDS
FROM EMPLOYEE;
FORALL INDX IN V_IDS.FIRST..V_IDS.LAST
INSERT INTO NEW_EMPLOYEE VALUES V_IDS(INDX);
END;
## 二、使用Oracle的CREATE TABLE语句
另外一种将数据库表转移的方法是使用Oracle的CREATE TABLE语句,即在新表中再创建一个相同的表结构,再将旧表的数据插入新表中。利用该方法还可以实现更复杂的转移操作,例如:重命名旧表的字段或对数据进行处理等,示例如下:
CREATE TABLE new_employees AS
(
SELECT id, name, age, gender+’_new’ AS gender_name
FROM employees
);
## 三、使用Oracle的Data Pump功能
另外一种简单可靠的转移数据库表的方法是使用Oracle数据泵工具——Data Pump。Data Pump是一个用于转移数据库表的灵活有效的工具,能够将单个表或多个表中的数据转移到不同的数据库实例中,具体步骤如下:
(1)将旧表导出为datapump文件;
(2)在新表中创建新表;
(3)从datapump文件中加载数据;
(4)提交事务。
例:
expdp scott/tiger@orcl directory=DUMPDIR DUMPFILE=emp.dpd UPLOAD SCHEMAS=scott
impdp scott/tiger@orcl directory=DUMPDIR DUMPFILE=Emp.dpd TABLES=EMP TABLE_EXISTS_ACTION=truncate
由上述内容可以看出,使用Oracle可以有多种方法将数据库表转移,而我们介绍的SQL*Plus INSERT语句, Oracle的CREATE TABLE语句,以及Data Pump功能等有助于帮助我们正确有效地完成这一任务。