我在ASP.NET appliaction中使用SQLloader来自动将批量上传数据从CSV / EXCEL上传到oracle db。 Sqlloader创建一个日志文件,显示在服务器上创建的导入结果。
我想向用户显示一些信息
读取了多少行? 有多少成功进口? 在aspx页面上
我该怎么做?
答案 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或更高,那么可以使用正则表达式函数。