我有一个很大的文本文件(大约50mb)。这个文本文件有数千条insert语句。我试图在Oracle SQL Developer中打开该文本文件,但它太大了。如何在SQL Developer中不打开文件的情况下将数据插入到表中?
我尝试逐个遍历insert语句,并将它们插入到我的表中,如下所示:
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远程连接到数据库。
发布于 2021-01-27 05:23:10
在我看来,最简单的方法是从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');
...发布于 2021-01-27 07:12:00
使用sqlplus,如果文本太多,则使用选项仅记录在文件中,而不显示在屏幕上
SET TERMOUT OFF;
spool M:\Documents\test.log;发布于 2021-01-27 11:13:58
使用@调用文件,而不是尝试打开文件。您可能还希望禁用反馈,以避免数千条"1 row inserted“消息。
set feedback off;
@c:\users\jon\Desktop\test.sql以上命令是SQL*Plus语法,但Oracle SQL Developer worksheets了解基本的SQL*Plus命令。如果您需要频繁运行大型脚本,那么您可能需要学习命令行SQL*Plus,但如果这只是一个一次性任务,那么请继续使用SQL Developer。
https://stackoverflow.com/questions/65908216
复制相似问题