将文本文件导入 Oracle 的存储过程

Posted

技术标签:

【中文标题】将文本文件导入 Oracle 的存储过程【英文标题】:Stored Procedure to import text file into Oracle 【发布时间】:2015-04-08 20:06:22 【问题描述】:

我有一个文本文件,我必须每天 3 次检查 Oracle 中的主数据库是否有重复项。过去我只会为此创建一个 SSIS 包,但不幸的是,我现在正在与 Oracle 打交道,我对 Oracle 知之甚少。我一直在寻找几天,我能想出的最佳解决方案是创建一个 Sql Loader,但我不知道如何将它放入存储过程中。

另外,我的文本文件没有格式化,所以我必须按位置获取前两个字段并忽略该行中的其余数据。

任何建议。我很茫然,任何帮助将不胜感激。

这是我目前想出的:

    CREATE TABLE Duplicate_Check 
    (field1 numeric(14), 
    PO numeric (7) Primary Key 
    )

         load data
         infile '\\(file location\.txt'
         into table Duplicate_Check
         (field1 position(1:14),
         PO position(16:22) ) 
        (field1, PO)

【问题讨论】:

外部表是你的朋友docs.oracle.com/cd/B19306_01/server.102/b14215/et_concepts.htm 【参考方案1】:

我会使用 oracle UTL_FILE 包来读取文件并解析出您需要检查重复项的数据。看来您只需要阅读前两行。

该文件必须存在于 DB 可访问的路径上,并且 DBA 必须在 ACL 中设置访问权限。

【讨论】:

【参考方案2】:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Demo sử dụng Oracle Objects for OLE (OO4O) với Clasic ASP</title>
	<style type="text/css">
		textarea 
			width: 800px;
			height: 200px
		
		
		.button 
			width: 120px;
			height: 35px;
			cursor: pointer;
		
		
		table 
			border: 2px solid #424242;
			border-collapse: collapse;
		
		
		th, td 
			border: 1px solid #424242;
			border-collapse: collapse;
			padding: 5px;
		
	</style>
</head>
<body>
    <h2>Demo sử dụng Oracle Objects for OLE (OO4O) với Clasic ASP</h2>
	
	<form action="" method="post">
		<div>
			<h4>Nhập câu lệnh SQL:</h4>
			<textarea name="query">SELECT * FROM Employees WHERE ROWNUM <= 10</textarea>
		<div>
		
		<div>
			<input type="submit" value="Execute SQL" class="button" />
		</div>
	</form>
	
	
</body>
</html>

【讨论】:

虽然此代码可能会回答问题,但提供有关 如何 和/或 为什么 解决问题的附加上下文将改善答案的长期性价值。

以上是关于将文本文件导入 Oracle 的存储过程的主要内容,如果未能解决你的问题,请参考以下文章

怎么把本地的存储过程导入oracle到数据库

plsql导入dmp文件存储过程需要删吗

oracle修改文本改名没反应

将变量从 Access(前端)传递到 Oracle(后端)存储过程

Oracle 存储过程在 Informatica 存储过程转换映射中的会话结束时运行

Oracle 存储过程自动化