首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle SQL:从大型文本文件运行insert语句

Oracle SQL:从大型文本文件运行insert语句
EN

Stack Overflow用户
提问于 2021-01-27 03:46:12
回答 3查看 204关注 0票数 0

我有一个很大的文本文件(大约50mb)。这个文本文件有数千条insert语句。我试图在Oracle SQL Developer中打开该文本文件,但它太大了。如何在SQL Developer中不打开文件的情况下将数据插入到表中?

我尝试逐个遍历insert语句,并将它们插入到我的表中,如下所示:

代码语言:javascript
运行
复制
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远程连接到数据库。

EN

回答 3

Stack Overflow用户

发布于 2021-01-27 05:23:10

在我看来,最简单的方法是从SQL*Plus运行它,例如:

代码语言:javascript
运行
复制
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包含如下内容

代码语言:javascript
运行
复制
insert into dept values (1, 'Dept 1', 'NY');
insert into dept values (2, 'Dept 2', 'London');
...
票数 1
EN

Stack Overflow用户

发布于 2021-01-27 07:12:00

使用sqlplus,如果文本太多,则使用选项仅记录在文件中,而不显示在屏幕上

代码语言:javascript
运行
复制
 SET TERMOUT OFF; 

 spool M:\Documents\test.log;
票数 1
EN

Stack Overflow用户

发布于 2021-01-27 11:13:58

使用@调用文件,而不是尝试打开文件。您可能还希望禁用反馈,以避免数千条"1 row inserted“消息。

代码语言:javascript
运行
复制
set feedback off;
@c:\users\jon\Desktop\test.sql

以上命令是SQL*Plus语法,但Oracle SQL Developer worksheets了解基本的SQL*Plus命令。如果您需要频繁运行大型脚本,那么您可能需要学习命令行SQL*Plus,但如果这只是一个一次性任务,那么请继续使用SQL Developer。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65908216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档