【问题标题】:read and insert data from text file to database table using oracle SQL Plus使用 oracle SQL Plus 从文本文件读取数据并将数据插入数据库表
【发布时间】:2019-01-09 08:07:22
【问题描述】:

我真的需要你的帮助 我一直在 SQL Server 上工作,但现在我在做其他事情,这就是我需要你帮助的原因。 我正在研究(Oracle SQL plus),我有一个文本文件,可以说名称 test.txt,我只想使用 SQL plus 将此文件中的数据上传到数据库表

让我们说文本文件数据:

001,迈克,2018 年 1 月 1 日

002,乔恩,2017 年 12 月 20 日

003,2018 年 5 月 25 日法案

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

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

请帮帮我 非常感谢

【问题讨论】:

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

标签: oracle plsql sqlplus


【解决方案1】:

如果文本文件在您运行 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

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

【讨论】:

  • 如果 txt 文件有:a,b,c 并且表格列类似于1,b,3,4,a,c,7。如何使用 plsql/bash 脚本相应地分配 txt 值?
  • 请提出一个新问题,解释您要做什么以及遇到什么问题。
  • 在这里分享,谢谢。 stackoverflow.com/questions/70033269/…
猜你喜欢
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-15
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
相关资源
最近更新 更多