我在 ASP.NET 应用程序中使用 SQLloader 将批量上传数据从 CSV/EXCEL 自动上传到 oracle db。Sqlloader 创建一个日志文件,显示在服务器上创建的导入结果。
我想向我的用户显示一些信息
读了多少行?成功导入多少?在 aspx 页面上
我怎么做?
我在 ASP.NET 应用程序中使用 SQLloader 将批量上传数据从 CSV/EXCEL 自动上传到 oracle db。Sqlloader 创建一个日志文件,显示在服务器上创建的导入结果。
我想向我的用户显示一些信息
读了多少行?成功导入多少?在 aspx 页面上
我怎么做?
您可以创建一个外部表来读取日志文件。这样做的好处是可以在 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>
接下来我们创建表。请注意 location 子句中日志文件的占位符名称....
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 或更高,因此可以使用 Regex 函数。