`
ljjclub
  • 浏览: 35267 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过外部表利用存储过程加载数据

阅读更多
每天需要定时百万条数据入库
建立外部表的步骤:

     1、创建以“,”分隔的文件“all.csv”至“D:\Test”

     2、创建一个Directory:

     create directory TestTable_dir as 'D:\Test' ;
3 授权

grant read,write on directory to user;
4,建表

CREATE TABLE test_all (
  t_name    varchar2(50),
  t_id  VARCHAR2(50),
  lo_du number(10),
  lo_fen number(10),
  lo_miao number(10,1),
  la_du number(10),
  la_fen number(10),
  la_miao number(10,1),
  v_level varchar2(50))
ORGANIZATION EXTERNAL (
TYPE oracle_loader
DEFAULT DIRECTORY datatest
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
BADFILE 'all_bad_file.bad'
LOGFILE 'all_log_file.log'
FIELDS TERMINATED BY ','
MISSING FIELD VALUES ARE NULL
REJECT ROWS WITH ALL NULL FIELDS
(t_name,t_id,lo_du,lo_fen,lo_miao,la_du,la_fen,la_miao,v_level))
LOCATION ('all.csv')
)
PARALLEL
REJECT LIMIT 0
NOMONITORING

5, 查询  select * from test_all

6.创建存储过程

建外部表
create or replace procedure proc_create_ext_tbls authid current_user is
begin
dbms_utility.exec_ddl_statement( '
CREATE TABLE test_all (
  t_name    varchar2(50),
  t_id  VARCHAR2(50),
  lo_du number(10),
  lo_fen number(10),
  lo_miao number(10),
  la_du number(10),
  la_fen number(10),
  la_miao number(10),
  v_level varchar2(50))
ORGANIZATION EXTERNAL (
TYPE oracle_loader
DEFAULT DIRECTORY datatest
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
BADFILE' ||''''||'all_bad_file.bad'||''''||
'LOGFILE' ||''''||'all_log_file.log'||''''||
'FIELDS TERMINATED BY'|| ''''||','||''''||
'MISSING FIELD VALUES ARE NULL
REJECT ROWS WITH ALL NULL FIELDS
(t_name,t_id,lo_du,lo_fen,lo_miao,la_du,la_fen,la_miao,v_level))
LOCATION ('||''''||'all.csv'||''''||')
)
PARALLEL
REJECT LIMIT 0
NOMONITORING
   ');
end proc_create_ext_tbls;

存入数据库

create or replace procedure test_ddl
is
begin
insert into tower_dll
(tower_id,tower_name,latitude,longtitude,v_level)
SELECT
SEQUENCE.nextval,t_name||t_id,la_du+la_fen/60+la_miao/3600,lo_du+lo_fen/60+lo_miao/3600,v_level from test_all;
commit;
end test_ddl;


6  建job 定时执行

begin
  sys.dbms_job.submit(job => :job,
                      what => 'proc_create_ext_tbls;',
                      next_date => to_date('28-06-2012 17:52:58', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate+1/24/60*5');
  commit;
end;

执行job时可能会出现视图错误。需要赋予相应权限
grant  CREATE ANY TABLE,CREATE any sequence  to user;
分享到:
评论

相关推荐

    sql2000 利用存储过程导出excel

    标题“sql2000 利用存储过程导出excel”指的是在SQL Server 2000中使用存储过程来生成Excel文件的过程。这个技术在数据处理和分析时非常有用,因为它允许用户直接从数据库中导出数据到Excel格式,方便进一步的数据...

    oracle存储过程学习经典

    ### Oracle存储过程学习经典 #### Oracle存储过程基础知识与实践 Oracle存储过程是SQL与PL/SQL结合...通过深入研究这些知识点,可以充分发挥Oracle存储过程在现代数据库管理系统中的作用,提高数据处理效率和安全性。

    SQLServer存储过程在系统开发中的应用

    5. **扩展存储过程**:通过外部编程语言(如 C 或 C++)编写,并以 DLL 形式加载到 SQL Server 中。扩展存储过程能够实现更复杂的功能,但同时也增加了潜在的安全风险。 #### 在 PowerBuilder 中调用存储过程 ...

    Oracle外部表特性深入浅出

    2. **访问方式**:可以直接通过SQL语句访问外部表,无需事先将数据加载到数据库中。这简化了数据处理流程,尤其适用于大规模数据的即时分析。 3. **只读特性**:由于外部表中的数据存储在操作系统文件中,所以它们...

    mysql循环添加数据(存储详细)

    根据提供的文件信息,本文将详细解析如何在MySQL中利用存储过程实现循环添加数据,并通过具体的示例代码来演示这一过程。此外,还将对比分析不同存储引擎(MyISAM与InnoDB)在执行批量数据插入时的性能差异。 ### ...

    sybase存储过程V15.0.pdf

    通过合理利用系统存储过程、目录存储过程、系统扩展存储过程以及dbcc存储过程等功能,可以极大地提升数据库应用的安全性、稳定性和性能。同时,良好的设计和编码习惯也是确保存储过程高效运行的关键。对于开发者而言...

    SQL2000存储过程[参照].pdf

    5. **扩展存储过程**:通过外部动态链接库执行,前缀为"xp_",需先加载到SQL Server系统中。 创建存储过程的方式主要有两种: 1. **使用企业管理器创建**: - 向导创建:通过"创建存储过程向导",可以便捷地生成...

    gbase8s 数据库数据的导入和导出.doc

    通过像外部表插入数据或者从外部表查询数据的方式,实现数据导入导出机制。创建外部表的语法如下: Create external table <tabname> Using (datafiles (datafiles), 其中 Column_options 用于定义外部表的字段...

    sql多条件存储过程

    - **事务管理**:利用存储过程管理数据库事务,确保数据一致性。 - **性能调优**:通过对存储过程的优化,进一步提升查询效率。 通过以上分析,我们可以看出存储过程是一种非常强大的工具,在处理复杂查询和业务...

    Oracle 高效分页存储过程(修改)

    分页存储过程可以极大地提升用户体验,因为它允许用户逐步加载数据,而不是一次性加载所有记录,从而节省网络资源和内存。本文将深入探讨Oracle数据库中的高效分页存储过程及其修改版。 首先,我们要理解什么是分页...

    SQL Server 2008数据库实用教程 sqlserver数据库基础教程 第7章 存储过程和触发器 共38页.pptx

    总的来说,存储过程和触发器是SQL Server数据库开发中的核心组件,通过合理利用它们,可以提升应用的性能,简化代码管理,并确保数据的准确性和一致性。学习和掌握这两者对于数据库管理员和开发人员来说至关重要。

    使用VB 调用oracle 数据库存储过程的研究

    假设我们有一个名为 `studentDB` 的 Oracle 数据库,其中包含一个名为 `student` 的表,以及一个用于向该表插入数据的存储过程 `pro_insert`。以下是在 VB 中调用该存储过程的具体步骤: ##### 4.1 定义连接字符串 ...

    SQL Server 2000 网络数据库教程第 9 章 存储过程和触发器.ppt

    - **扩展存储过程**:是外部的动态链接库(DLL),需要在SQL Server中加载才能使用,它们也存储在MASTER数据库中,提供了对系统功能的扩展。 创建存储过程通常有两种方式: 1. **使用SQL Server企业管理器**:通过...

    oracle 存储过程分页示例

    然后,在外部查询中,我们通过`rnum >= start_row`过滤出当前页的数据。这种方法确保了即使在数据量大的情况下,也能够有效地进行分页。 为了调用这个存储过程并显示结果,你可以在PL/SQL环境中这样做: ```sql ...

    经过优化测试的SQL分页存储过程

    SQL分页存储过程是在数据库管理中用于实现高效数据分页查询的重要工具。在Web应用中,当需要展示大量数据时,分页功能不可或缺,因为它允许用户逐步加载和浏览数据,而不是一次性加载所有记录,从而提高用户体验并...

    存储过程在SQL Server数据库自我管理中的高级应用.pdf

    存储过程实现了代码的模块化和重用,通过数据隔离保证了安全性,同时独立于外部编程语言,不依赖特定的客户端应用程序。这样,任何语言编写的客户端程序只需要调用存储过程,减少了网络传输和执行时间,提高了性能。...

    SQL Server分页存储过程

    本话题将深入探讨如何利用存储过程实现SQL Server中的分页查询,同时考虑多表查询和任意排序。 首先,理解分页的基本概念是关键。分页通常通过LIMIT或OFFSET/FETCH关键字来实现,但在SQL Server中,我们依赖的是TOP...

Global site tag (gtag.js) - Google Analytics