问题描述
我有一个脚本,在一个表中有大约2600条插入语句。像下面一样
insert into STUDENT(NAME,ROLL) VALUES('Bob',1);
insert into STUDENT(NAME,ROLL) VALUES('Ron',2);
.
.
insert into STUDENT(NAME,ROLL) VALUES('Jack',2600);
我通过按F9
运行此脚本(Oracle DB),它开始逐行执行并且需要很多时间。
有没有一种方法可以一次执行所有操作?
注意:插入脚本是通过导出生成的,我无法以以下格式进行更改
insert into STUDENT
VALUES
('Bob',1),('Ron',2),.
.
('Jack',2600);
解决方法
脚本包含单独的INSERT INTO
语句,它们按这样的方式执行-分别一对一地执行。
如果您将数据导出到例如CSV文件,您可以拥有
- 使用的SQL * Loader或
- 外部表功能
可以更快地完成。但是,正如您没有那样,让脚本运行并等待一会儿。我认为您没有其他选择(除非您将其分成几个较小的文件,然后在单独的SQL * Plus连接中并行运行它们,但这可能比等待当前脚本完成需要更多的时间进行准备)。
从SQL * Loader开始:
- 首先,请确保您有文本文件中的数据(例如,以分号分隔)
- 检查计算机上是否有SQL * Loader。它与任何Oracle数据库一起安装,或者-如果您的PC上没有它-Oracle客户端软件
- 然后创建一个控制文件,该文件使用CSV文件作为输入并将数据加载到目标表的适当列中
这是Oracle 11g SQL*Loader文档。读取它需要花费一些时间,但是-关于它是一个简单的两列表这一事实,应该非常简单。