如何使用 unix scripting/plsql 将文本文件导入 sql 表

Posted

技术标签:

【中文标题】如何使用 unix scripting/plsql 将文本文件导入 sql 表【英文标题】:How to import txt file to sql tabl using unix scripting/plsql 【发布时间】:2021-12-31 17:53:48 【问题描述】:

我有一个输入文件:$home/dir/subdir/input.txt

input.txt 的内容:

123,0000,11111,3,1,X
124,0001,11112,3,1,Y
125,0002,,4,2,Y
129,0003,11114,4,2,X

如何使用输入文件将它们插入到使用 unix 脚本/plsql 的 sql 表中?

col1 col2 col3 col4 col5 col6
123 0000 11111 3 1 X
124 0001 11112 3 1 Y
125 0002 4 2 Y
129 0003 11114 4 2 X

【问题讨论】:

【参考方案1】:

使用 unix 脚本/plsql?

Oracle 提供了几种方法来做到这一点。

其中之一是使用SQL Loader。它的好处是您可以在自己的 PC 上做所有事情(即源文件可以驻留在您自己的计算机上)。它运行得非常非常快。

另一个是外部表格功能。它使您可以像访问普通 Oracle 数据库表一样访问源文件,即您可以编写 SELECT 语句从文件中获取数据并将这些行插入到目标表中。它的缺点是您必须创建一个 directory,Oracle 对象指向通常位于数据库服务器上的文件系统目录,因此 - 如果您不是 DBA - 您必须与某人交谈以创建目录并让您访问它(即授予所需的权限)。

另一个选项 - 正如您所说的,PL/SQL,是使用UTL_FILE 包。您将创建一个 PL/SQL 脚本来打开文件,逐行读取它并将行插入到目标表中。与上一个选项类似,必须有一个您有权访问的目录。

截至 Unix 脚本,我不确定您的意思是什么。 Unix是操作系统,它不会将行插入数据库。如果您的意思是说您将创建一个脚本,然后调用另一个 - 数据库 - 脚本来实际完成这项工作,这是可能的(例如,您将调用 sqlldr 可执行文件)。


因此,这仅取决于您可以访问什么,是否可以(或不能)访问数据库服务器的目录。我不会编写任何代码(涵盖所有这些选项将花费太多时间),但如果您选择哪种方式,我可以提供帮助(除了 Unix 部分;我不使用它)。

【讨论】:

以上是关于如何使用 unix scripting/plsql 将文本文件导入 sql 表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 akka 连接到 Unix 套接字?

如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)?

如何使用 NSFileManager 复制 UNIX 可执行文件?

如何使用 Unix 命令行运行 java 包?

如何跨(计算)节点使用 unix 管道?

你如何在 Python 中使用 Unix 套接字?