输出Oracle数据库中输入与输出运算符使用指南(oracle中的输入&)

输出Oracle数据库中输入与输出运算符使用指南

Oracle数据库是业内最为流行的关系型数据库管理系统之一。在使用Oracle数据库的过程中,掌握输入与输出运算符的使用方法将会使日常开发和维护工作更加高效。本文将详细介绍Oracle数据库中输入与输出运算符的使用指南,帮助读者快速上手。

一、输入运算符

输入运算符主要用于将数据从外部输入到Oracle数据库中。

1. 外部表输入运算符

当需要从外部文本文件中导入数据到Oracle数据库中时,可以使用外部表输入运算符。在使用前,需要先创建外部表,如下所示:

CREATE TABLE ext_school
(
id NUMBER(10),
name VARCHAR2(100)
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY my_ext_tab_dir
ACCESS PARAMETERS
( RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ','
)
LOCATION ('school_ext.txt')
)

上述代码创建了一个名为`ext_school`的外部表,其默认的数据源是我的数据目录`my_ext_tab_dir`中的名为`school_ext.txt`的文本文件。注意,该文件的每一行数据必须由逗号分隔的两个字段组成。

之后,在此基础上使用输入运算符即可将数据导入到Oracle数据库中:

INSERT INTO school(id, name)
SELECT * FROM ext_school;

2. 数据泵输入运算符

数据泵输入运算符可以将数据从一个Oracle数据库实例中的一张表中导入到另一个Oracle数据库实例的另一张表中。使用前,需要对源表和目标表进行定义并创建导出/导入作业。

示例代码如下:

-- 创建源表
CREATE TABLE origin_school
(
id NUMBER(10),
name VARCHAR2(100)
);

-- 创建目标表
CREATE TABLE target_school
(
id NUMBER(10),
name VARCHAR2(100)
);
-- 创建导出作业
BEGIN
DBMS_DATAPUMP.CREATE_EXPORT_JOB(
job_name=>'export_job',
table_name=>'origin_school',
directory=> 'mypumpdir');
END;

-- 通过expdp工具导出数据到文件
$ expdp tablespaces=USERS directory=mypumpdir dumpfile=origin_school.dmp logfile=expdp.log
-- 在另一个Oracle数据库实例中,创建导入作业
BEGIN
DBMS_DATAPUMP.CREATE_IMPORT_JOB(
job_name=>'import_job',
table_name=>'target_school',
directory=> 'mypumpdir');
END;

-- 通过impdp工具导入数据
$ impdp tablespaces=USERS directory=mypumpdir dumpfile=origin_school.dmp logfile=impdp.log REMAP_TABLE=origin_school:target_school

以上,我们首先创建了一个`origin_school`表来作为数据源表。然后,创建了一个`target_school`表来作为数据的接收表。之后,我们使用`DBMS_DATAPUMP.CREATE_EXPORT_JOB`和`DBMS_DATAPUMP.CREATE_IMPORT_JOB`函数分别创建了导出和导入作业,并使用`expdp`和`impdp`工具完成了数据的导入和导出。

二、输出运算符

相反,输出运算符可以将Oracle数据库中的数据输出到外部环境中。

1. 外部表输出运算符

使用外部表输出运算符可以将Oracle数据库中的数据输出到一个文本文件中。为了使用该输出运算符,我们需要先创建外部表,并将需要输出的数据插入到该表中:

-- 创建外部表
CREATE TABLE ext_output_school
(
id NUMBER(10),
name VARCHAR2(100)
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY my_ext_tab_dir
ACCESS PARAMETERS
( RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ','
MISSING FIELD VALUES ARE NULL
)
LOCATION ('output_school.txt')
);

-- 将数据插入到外部表中
INSERT INTO ext_output_school(id, name)
SELECT * FROM school;

我们可以使用SELECT语句和以外部表的形式来查询数据,并将查询结果输出到文件中。示例代码如下:

-- 查询结果并输出到文件
SELECT *
FROM ext_output_school
WHERE id >= 1
ORDER BY id ASC;
SPOOL /mnt/output_school.log

SELECT *
FROM ext_output_school
WHERE id >= 1
ORDER BY id ASC;
SPOOL OFF

以上,我们首先定义了需要查询的输出结果,并使用`SPOOL`命令将其输出到文件`/mnt/output_school.log`中,之后关闭了输出记录器。

2. 数据泵输出运算符

若要将Oracle数据库中的表导出到一个.dmp文件中,则需要使用数据泵输出运算符。

示例代码如下:

-- 创建要导出的表及其数据
CREATE TABLE school
(
id NUMBER(10,0),
name VARCHAR2(100)
);
INSERT INTO school(id, name) VALUES(1, '学校1');
INSERT INTO school(id, name) VALUES(2, '学校2');
INSERT INTO school(id, name) VALUES(3, '学校3');
COMMIT;

-- 创建导出作业
BEGIN
DBMS_DATAPUMP.CREATE_EXPORT_JOB(
job_name=>'exp_job',
table_name=>'school',
directory=> 'mypumpdir');
END;

-- 使用expdp工具导出数据到文件
$ expdp tablespaces=USERS directory=mypumpdir dumpfile=school.dmp logfile=expdp.log

以上,我们首先创建了一个`school`表,并向其中添加了三行数据。之后,我们创建了一个导出作业`exp_job`,并使用`expdp`工具将该表导出到文件`school.dmp`中,并将导出过程的日志保存在文件`expdp.log`中。

总结:

本文简单介绍了Oracle数据库中输入与输出运算符的使用指南。当需要将数据从外部输入到Oracle数据库中时,我们可以使用外部表输入运算符或数据泵输入运算符。当需要将Oracle数据库中的数据输出到外部环境中时,我们可以使用外部表输出运算符或数据泵输出运算符。希望读者们能够掌握运算符的使用方法,并在实际开发中灵活应用。


数据运维技术 » 输出Oracle数据库中输入与输出运算符使用指南(oracle中的输入&)