Oracle SQL:从大型文本文件运行插入语句
Posted
技术标签:
【中文标题】Oracle SQL:从大型文本文件运行插入语句【英文标题】:Oracle SQL: Running insert statements from a large text file 【发布时间】:2021-01-26 19:46:11 【问题描述】:我有一个大文本文件(大约 50mb)。这个文本文件有数千个插入语句。我试图在 Oracle SQL Developer 中打开文本文件,但它太大了。如何在不使用 SQL Developer 打开文件的情况下将数据插入到我的表中?
我尝试逐个循环插入语句并将它们插入到我的表中,如下所示:
DECLARE
V1 VARCHAR2(32767);
fileVariable UTL_FILE.FILE_TYPE;
BEGIN
fileVariable := UTL_FILE.FOPEN('h:/Documents',
'clob_export.sql',
'R',
32760);
UTL_FILE.GET_LINE(fileVariable,V1,32767);
UTL_FILE.FCLOSE(fileVariable);
END;
但这似乎不起作用。我无法在机器上创建目录,无论如何,文本文件在我运行 SQL Developer 的计算机上,并且 SQL Developer 远程连接到数据库。
【问题讨论】:
【参考方案1】:从我的角度来看,最简单的方法是从 SQL*Plus 运行它,例如:
c:\Temp>sqlplus scott/tiger
SQL*Plus: Release 11.2.0.2.0 Production on Uto Sij 26 22:20:18 2021
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> @insert_data.sql
1 row created.
1 row created.
<snip>
假设 insert_data.sql
包含类似的东西
insert into dept values (1, 'Dept 1', 'NY');
insert into dept values (2, 'Dept 2', 'London');
...
【讨论】:
【参考方案2】:使用 sqlplus,如果文本过多,则使用选项仅登录文件而不是屏幕
SET TERMOUT OFF;
spool M:\Documents\test.log;
【讨论】:
【参考方案3】:使用@
调用文件,而不是尝试打开文件。您可能还想禁用反馈以避免成千上万的“插入 1 行”消息。
set feedback off;
@c:\users\jon\Desktop\test.sql
上述命令是 SQL*Plus 语法,但 Oracle SQL Developer 工作表理解基本的 SQL*Plus 命令。如果您需要经常运行大型脚本,那么您可能想学习命令行 SQL*Plus,但如果这只是一次性任务,那么请坚持使用 SQL Developer。
【讨论】:
以上是关于Oracle SQL:从大型文本文件运行插入语句的主要内容,如果未能解决你的问题,请参考以下文章