从 .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 文件中的数据并将其添加到列表中?