从 .txt 文件读取数据并将其插入 Oracle SQL DB [PL/SQL,Unix 脚本]

Posted

技术标签:

【中文标题】从 .txt 文件读取数据并将其插入 Oracle SQL DB [PL/SQL,Unix 脚本]【英文标题】:Read and insert data from .txt file to Oracle SQL DB [PL/SQL, Unix Scripting] 【发布时间】:2021-12-30 03:14:40 【问题描述】:

我有一个输入文件:$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

我有一个表 col2, col3 不能为空:

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

如何将input.txt 的内容相应地插入到表格中?使用 pl/sql 和 unix 脚本

【问题讨论】:

实际上 col1 似乎为空。 您可以为此使用外部表。 google 上有很多例子。不需要 unix 脚本。 hi @choroba, col1 和其他 cols 为空。这意味着 .txt 中的数据被分配到特定的列。 那么为什么“col1, col2, col3 不能为空”? 只是 col2 和 col3。我已经更新了。不应插入 input.txt 中的第三行 【参考方案1】:

您可以使用regexp_substr 函数。

在下面的例子中,我使用了regexp_like 函数来确认它是给定的格式。随意调整。 示例:

SELECT regexp_substr(string, '[^,]+', 1, 1) as col2,
       regexp_substr(string, '[^,]+', 1, 2) as col3, 
       regexp_substr(string, '[^,]+', 1, 3) as col4, 
       regexp_substr(string, '[^,]+', 1, 4) as col7,
       regexp_substr(string, '[^,]+', 1, 5) as col8,
       regexp_substr(string, '[^,]+', 1, 6) as col9,  
FROM   table
WHERE  REGEXP_LIKE(string, '[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[A-Za-z]+');

结果:

COL1 COL2 COL3 COL4 COL5 COL6 COL7 COL8 COL9
- 123 0000 11111 - - 3 1 X
- 129 0003 11114 - - 4 2 X
- 124 0001 11112 - - 3 1 Y

【讨论】:

以上是关于从 .txt 文件读取数据并将其插入 Oracle SQL DB [PL/SQL,Unix 脚本]的主要内容,如果未能解决你的问题,请参考以下文章

使用 PL/SQL 将数据从 file.txt 导入 Oracle SQL 表

我正在尝试从文本文件数据中提取并将其添加到音频读取函数 Matlab

Android 如何轻松读取 txt 文件中的数据并将其添加到列表中?

Python - 从 txt 文件计算关于其标签的行之间的时间差

C/s从文件(TXT)中读取数据插入数据库

使用 Zend 读取 Access 数据库文件 [关闭]