sql loader日志文件结果

时间:2010-02-04 10:45:03

标签: oracle sql-loader

我在ASP.NET appliaction中使用SQLloader来自动将批量上传数据从CSV / EXCEL上传到oracle db。 Sqlloader创建一个日志文件,显示在服务器上创建的导入结果。

我想向用户显示一些信息

读取了多少行? 有多少成功进口?  在aspx页面上

我该怎么做?

1 个答案:

答案 0 :(得分:4)

您可以创建外部表来读取日志文件。这样做的好处是可以在SQL查询中使用外部表。

首先,您需要创建一个目录对象来标识操作系统目录路径。这需要具有CREATE ANY DIRECTORY权限的用户(可能是DBA帐户)来完成....

SQL> create or replace directory sqlldr_log_dir as 'C:\your\directory\path'
  2  /

Directory created.


SQL> grant read , write on directory sqlldr_log_dir to apc
  2  /

Grant succeeded.

SQL> 

接下来我们创建表格。请注意位置子句中的日志文件的占位符名称....

SQL> create table sqlldr_logfiles (
  2      text_line varchar2(1024)
  3  )
  4  organization external
  5  (
  6      type oracle_loader
  7      default directory sqlldr_log_dir
  8      access parameters
  9          (records delimited by newline
 10              fields (text_line char(1024)
 11          )
 12      )
 13      location ('changeme.log')
 14  )
 15  /

Table created.

SQL>

现在要操作系统进行导入...

C:\temp>imp apc file=apc_20100204.dmp log=apc_20100204.log tables=PTEST6,A

Import: Release 11.1.0.6.0 - Production on Thu Feb 4 11:51:07 2010

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

Password:

Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Export file created by EXPORT:V11.01.00 via conventional path
import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
. importing APC's objects into APC
. importing APC's objects into APC
. . importing table                            "A"         12 rows imported
. . importing table                       "PTEST6"         19 rows imported
IMP-00009: abnormal end of export file
Import terminated successfully with warnings.

C:\temp>

此目录应与您之前使用的目录相同。回到SQL。首先,我们将外部表指向我们之前使用的日志文件,然后从中查询...

SQL> alter table sqlldr_logfiles location ('apc_20100204.log')
  2  /

Table altered.

SQL> select * from sqlldr_logfiles
  2  where text_Line like '. . importing table%'
  3  /

text_Line
--------------------------------------------------------------------------------
. . importing table                            "A"         12 rows imported
. . importing table                       "PTEST6"         19 rows imported

SQL>

格式化输出很简单,特别是如果你有10g或更高,那么可以使用正则表达式函数。