使用oracle SQL Plus读取文本文件中的数据并将其插入数据库表

使用oracle SQL Plus读取文本文件中的数据并将其插入数据库表,oracle,plsql,sqlplus,Oracle,Plsql,Sqlplus,我真的需要你的帮助 我总是在SQL server上工作,但现在我正在做其他事情,这就是为什么我需要您的帮助。 我正在处理(Oracle SQL plus),我有一个文本文件,比如test.txt,我只想使用SQL plus将此文件中的数据上传到数据库表 假设文本文件数据: 001,迈克,1-1-2018 002,jon,20-12-2017 003,工程量清单25-5-2018 如何在sql plus上编写pl/sql代码,将文本文件中的数据上载到数据库中的表?? 通常在SQL server上我

我真的需要你的帮助 我总是在SQL server上工作,但现在我正在做其他事情,这就是为什么我需要您的帮助。 我正在处理(Oracle SQL plus),我有一个文本文件,比如test.txt,我只想使用SQL plus将此文件中的数据上传到数据库表

假设文本文件数据:

001,迈克,1-1-2018

002,jon,20-12-2017

003,工程量清单25-5-2018

如何在sql plus上编写pl/sql代码,将文本文件中的数据上载到数据库中的表?? 通常在SQL server上我使用批量插入,这里有哪些方法

我从网上尝试了很多,但都没有解决

请帮帮我
非常感谢

如果文本文件位于运行SQL*Plus的同一台计算机上,则可以使用

举个简单的例子,假设您的表是:

create table your_table (id number, name varchar2(10), some_date date);
您有一个文本文件
data.txt
,包含您显示的内容,但在第三行添加了逗号:

001,mike,1-1-2018
002,jon,20-12-2017
003,bill,25-5-2018
您可以在同一目录中创建一个名为say
your_table.ctl
的基本SQL*加载程序控制文件,如下所示:

LOAD DATA
INFILE 'data.txt'
APPEND
INTO TABLE your_table
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
  ID,
  NAME,
  SOME_DATE DATE "DD-MM-YYYY"
)
查看文档以了解所有这些都意味着什么,特别是
APPEND
意味着什么;您可能想要截断,但要小心

然后从命令行(而不是从SQL*Plus中)运行SQL*Loader,使用通常用于连接数据库的相同凭据和连接字符串:

sqlldr userid=usr/pwd@tns control=your_table.ctl
完成后-假设在控制台ro上创建的日志文件中没有报告错误-查询表将显示:

select * from your_table;

        ID NAME       SOME_DATE 
---------- ---------- ----------
         1 mike       2018-01-01
         2 jon        2017-12-20
         3 bill       2018-05-25
还有很多其他选项和功能,但这可能满足您目前的需要。

您可能希望查看而不是尝试创建自己的解决方案,假设文本文件位于客户端计算机上,而不是数据库服务器上(如果它们不同的话)。如果文件在服务器上,则可以查看外部表。PL/SQL解决方案也需要将文件放在DB服务器上。