用分析函数实现自动生成sqlloader定长数据装载控制文件的一个语句
来源:互联网 发布:phantomjs python 编辑:程序博客网 时间:2024/05/21 16:57
本文中的内容在《2010-05-07 22:08 Automatic SQL*LOADER(以定长方式为例) ,原文地址:http://hi.baidu.com/nsj820/item/b346e517416d43011994ec5c》也能实现,但这里主要想体现的是oracle分析函数的强大。
WITH FIX_LENGTH AS (SELECT A.TABLE_NAME, A.COLUMN_ID, A.COLUMN_NAME, A.DATA_LENGTH, SUM(P_OFFSET) OVER(PARTITION BY A.TABLE_NAME ORDER BY A.COLUMN_ID) P_START, SUM(P_OFFSET) OVER(PARTITION BY A.TABLE_NAME ORDER BY A.COLUMN_ID) + DATA_LENGTH - 1 P_END FROM (SELECT A.TABLE_NAME, A.COLUMN_ID, A.COLUMN_NAME, A.DATA_LENGTH, LAG(A.DATA_LENGTH, 1, 1) OVER(PARTITION BY A.TABLE_NAME ORDER BY A.COLUMN_ID) P_OFFSET, SUM(A.DATA_LENGTH) OVER(PARTITION BY A.TABLE_NAME ORDER BY A.COLUMN_ID) P_CONTINUOUS_SUMMATION FROM USER_TAB_COLUMNS A) A)SELECT DISTINCT 'LOAD DATAINFILE *INTO TABLE ' || TABLE_NAME || 'REPLACE' FROM USER_TAB_COLUMNS WHERE TABLE_NAME = &TAB_NAMEUNION ALLSELECT * FROM (SELECT DECODE(COLUMN_ID, 1, '(', '') || COLUMN_NAME || ' POSITION(' || P_START || ':' || P_END || ')' || DECODE(COLUMN_ID, MAX(COLUMN_ID) OVER(PARTITION BY TABLE_NAME), ')', ',') FROM FIX_LENGTH WHERE TABLE_NAME = &TAB_NAME ORDER BY TABLE_NAME, COLUMN_ID);
用到的知识点
1、oracle分析函数
1.1、偏移函数lead
1.2、sum()over(PARTITION by order by)连续求和的使用
2、union all的排序
使用union all不能任意排序,只能按两个union all的内容都有的字段进行排序;排序是对union all后的整体结果进行排序,而非其某一部分。
3、此代码可以实现sqlloader定长数据装载控制文件的编写
当然,用oracle游标也能实现;但本文中的方法相对简单一些。
- 用分析函数实现自动生成sqlloader定长数据装载控制文件的一个语句
- 用sqlloader(sqlldr)装载LOB数据
- 如何在SqlLoader中装载日期型的数据
- sqlloader中关于ctl控制文件的相关参数说明
- sqlloader中关于ctl控制文件的相关参数说明:
- 一个字符串定长补齐的函数
- 一个自动生成Hibernate ORM映射文件的工具函数
- 自动生成 SQL* LOADER 的控制文件
- 一个生成COBOL测试数据的小程序——分析COBOL中数据声明的语句
- 基于一个简单定长内存池的实现方法详解
- php生成定长的随机数
- 用自动生成代码实现数据的持久化
- sqlloader 导入数据的一点经验教训
- Oracle自动生成数据字典的SQL语句
- Oracle自动生成数据字典的SQL语句
- Oracle自动生成数据字典的SQL语句
- Oracle自动生成数据字典的SQL语句
- asp根据表单自动生成sql语句的函数
- App自适应draw9patch不失真背景(很详细)
- 加载.lib文件
- 日语五十音图详解
- 总有一种力量 让你泪流满面
- 纯c接口dll 和windows句柄文章
- 用分析函数实现自动生成sqlloader定长数据装载控制文件的一个语句
- C# 一次取出N个不同随机数
- C#和.NET平台的概貌
- VC 创建弹出式菜单
- SQL调整技巧(1)
- IOS的一些小知识
- handlersocket使用 第一章 基本语法和一个简单示例
- java web中的EL
- Delphi字符串操作的常用函数一