自动生成sqlloader的控制文件
2018-03-03 16:30
302 查看
sqlloader 运行过程需要控制文件,一下sql 脚本实现了自动生成控制文件
脚本如下(假如命名为ctl.sql):
然后你就登陆到数据库中执行该sql 脚本 需要给两个参数第一就是 表名 第二就是 模式 (比如 insert, append, replace, truncate)
运行完毕之后就会在当前路径下面生成了控制文件,可以直接拿去用了
脚本如下(假如命名为ctl.sql):
set echo off set heading off set verify off set feedback off set show off set trim off set pages 0 set concat on set lines 300 set trimspool on set trimout on spool &1..ctl select 'OPTIONS (DIRECT=true)'||chr (10)|| 'LOAD DATA'||chr (10)|| 'INFILE '''||lower (table_name)||'.dat'''||chr (10)|| '&2 INTO TABLE '||table_name||chr (10)|| 'FIELDS TERMINATED BY '','''||chr (10)|| 'TRAILING NULLCOLS'||chr (10)||'(' from all_tables where table_name = upper ('&1'); select decode (rownum, 1, ' ', ' , ')|| rpad (column_name, 33, ' ')|| decode (data_type, 'VARCHAR2', 'CHAR NULLIF ('||column_name||'=BLANKS)', 'FLOAT', 'DECIMAL EXTERNAL NULLIF('||column_name||'=BLANKS)','NUMBER', decode (data_precision, 0, 'INTEGER EXTERNAL NULLIF ('||column_name||'=BLANKS)', decode (data_scale, 0,'INTEGER EXTERNAL NULLIF ('||column_name||'=BLANKS)', 'DECIMAL EXTERNAL NULLIF ('||column_name||'=BLANKS)')), 'DATE','DATE "YYYY-MM-DD HH24:MI:SS" NULLIF ('||column_name||'=BLANKS)', null) from user_tab_columns where table_name=upper('&1') order by column_id; select ')' from sys.dual; spool off
然后你就登陆到数据库中执行该sql 脚本 需要给两个参数第一就是 表名 第二就是 模式 (比如 insert, append, replace, truncate)
SQL> start ctl.sql qq APPEND LOAD DATA INFILE 'qq.dat' APPEND INTO TABLE QQ FIELDS TERMINATED BY ',' TRAILING NULLCOLS ( ID INTEGER EXTERNAL NULLIF (ID=BLANKS) , QQ_NUMBER CHAR NULLIF (QQ_NUMBER=BLANKS) , QQ_STATUS CHAR NULLIF (QQ_STATUS=BLANKS) , QQ_NAME CHAR NULLIF (QQ_NAME=BLANKS) , QQ_AGE INTEGER EXTERNAL NULLIF (QQ_AGE=BLANKS) , QQ_EMAIL CHAR NULLIF (QQ_EMAIL=BLANKS) , QQ_ZONE CHAR NULLIF (QQ_ZONE=BLANKS) , IS_VIP CHAR NULLIF (IS_VIP=BLANKS) , ADDRESS CHAR NULLIF (ADDRESS=BLANKS) , REGISTER_DATE DATE "YYYY-MM-DD HH24:MI:SS" NULLIF (REGISTER_DATE=BLANKS) , LAST_LOGIN_TIME DATE "YYYY-MM-DD HH24:MI:SS" NULLIF (LAST_LOGIN_TIME=BLANKS) , LAST_LOGIN_ADDR CHAR NULLIF (LAST_LOGIN_ADDR=BLANKS) , LAST_LOGIN_TERMINAL CHAR NULLIF (LAST_LOGIN_TERMINAL=BLANKS) )
运行完毕之后就会在当前路径下面生成了控制文件,可以直接拿去用了
相关文章推荐
- 用分析函数实现自动生成sqlloader定长数据装载控制文件的一个语句
- 自动生成控制文件及数据文件并完成sqlldr的自动导入
- 自动生成 SQL* LOADER 的控制文件
- Oracle 控制文件自动生成
- 自动生成导入oracle数据库的控制文件---[*.ctl]
- 初学Phreeze 5 --excel 表格,自动生成文件
- 在ASP.NET网站中实现带列表(其由xml文件控制生成)的视频播放
- HibernateTools工具通过hbm文件自动生成ddl、pojo等代码
- RMAN 控制文件的自动备份
- R文件不能自动生成
- GridView自动生成列时,利用DIV控制显示长宽 控件数据行和表头文字不换行
- 使用apache htpasswd生成加密的password文件,并使用.htaccess控制文件夹訪问
- Android 导入android源码有错,R.java文件不能自动生成解决方法
- play framework在eclipse中自动的预编译生成precompiled文件
- express-generator 自动生成服务器基本文件
- Hibernate 自动生成映射文件 || 根据pojo类生成数据库表
- 如何生成自动执行的jar文件
- hibernate01 和JDBC的优缺点、配置文件、加载流程、自动生成、对象的状态
- 在Eclipse中使用Axis2插件自动生成WSDL文件
- 全面解析Unity3D自动生成的脚本工程文件