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

时间:2018-08-01 16:54:23

标签: oracle plsql sqlplus

我真的需要你的帮助 我一直在SQL Server上工作,但是现在我在做其他事情,这就是为什么我需要您的帮助。 我正在使用(Oracle SQL plus),我有一个文本文件,可以说名称为test.txt,只是我想使用SQL plus

从该文件将数据上传到数据库表

让我们说说文本文件数据:

001,麦克,2018年1月1日

002,2017年12月20日,

003,法案25-5-2018

如何在sql plus上编写代码pl / sql,以将文本文件中的数据上传到我数据库的表中? 通常在SQL Server上我使用Bulk insert,这里有什么方法?

我在互联网上尝试了很多,但没有解决。

请帮助我 非常感谢

1 个答案:

答案 0 :(得分:2)

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

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

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

您可以在同一目录中创建一个基本的SQL * Loader控制文件,称为“ your_table.ctl”,例如:

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的含义;您可能想改为TRUNCATE-但要小心。

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

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

还有许多其他选项和功能,但这可能满足您目前的需求。