两个用户的SQLULDR2需求


有两个用户要求SQLULDR2能根据查询语句的结果给出建表的语法, 先提出要求的是一个国外网友, 当时没有理他, 这周一个国内网友也提出了同样的需求, 想想也比较合理, 于是就满足一下吧.
    建表的语法会写在SQLLDR的控制文件中, 并不生成独立的SQL文件, 当我们运行如下命令.

sqluldr2 scott/tiger query=emp table=emp
    得到的SQLLDR控制文件(emp_sqlldr.ctl)中, 就包含了建表语法, 如下所示.

--
-- SQL*UnLoader: Fast Oracle Text Unloader (GZIP), Release 3.0.1
-- (@) Copyright Lou Fangxin (AnySQL.net) 2004 - 2010, all rights reserved.
--
/*
  CREATE TABLE emp (
    EMPNO NUMBER(4),
    ENAME VARCHAR2(10),
    JOB VARCHAR2(9),
    MGR NUMBER(4),
    HIREDATE DATE,
    SAL NUMBER(7,2),
    COMM NUMBER(7,2),
    DEPTNO NUMBER(2)
  );
*/
OPTIONS(BINDSIZE=2097152,READSIZE=2097152,ERRORS=-1,ROWS=50000)
LOAD DATA
INFILE 'uldrdata.txt' "STR X'0a'"
INSERT INTO TABLE emp
FIELDS TERMINATED BY X'2c' TRAILING NULLCOLS
(
  EMPNO CHAR(6) NULLIF EMPNO=BLANKS,
  ENAME CHAR(10) NULLIF ENAME=BLANKS,
  JOB CHAR(9) NULLIF JOB=BLANKS,
  MGR CHAR(6) NULLIF MGR=BLANKS,
  HIREDATE DATE "YYYY-MM-DD HH24:MI:SS" NULLIF HIREDATE=BLANKS,
  SAL CHAR(10) NULLIF SAL=BLANKS,
  COMM CHAR(10) NULLIF COMM=BLANKS,
  DEPTNO CHAR(4) NULLIF DEPTNO=BLANKS
)
    数据类型的准确性还有待验证, 并且只是Oracle的建表语法, CHAR和VARCHAR2也没有进行区分, 若有必要可进一步改善

有两个用户要求SQLULDR2能根据查询语句的结果给出建表的语法, 先提出要求的是一个国外网友, 当时没有理他, 这周一个国内网友也提出了同样的需求, 想想也比较合理, 于是就满足一下吧.
    建表的语法会写在SQLLDR的控制文件中, 并不生成独立的SQL文件, 当我们运行如下命令.

sqluldr2 scott/tiger query=emp table=emp
    得到的SQLLDR控制文件(emp_sqlldr.ctl)中, 就包含了建表语法, 如下所示.

--
-- SQL*UnLoader: Fast Oracle Text Unloader (GZIP), Release 3.0.1
-- (@) Copyright Lou Fangxin (AnySQL.net) 2004 - 2010, all rights reserved.
--
/*
  CREATE TABLE emp (
    EMPNO NUMBER(4),
    ENAME VARCHAR2(10),
    JOB VARCHAR2(9),
    MGR NUMBER(4),
    HIREDATE DATE,
    SAL NUMBER(7,2),
    COMM NUMBER(7,2),
    DEPTNO NUMBER(2)
  );
*/
OPTIONS(BINDSIZE=2097152,READSIZE=2097152,ERRORS=-1,ROWS=50000)
LOAD DATA
INFILE 'uldrdata.txt' "STR X'0a'"
INSERT INTO TABLE emp
FIELDS TERMINATED BY X'2c' TRAILING NULLCOLS
(
  EMPNO CHAR(6) NULLIF EMPNO=BLANKS,
  ENAME CHAR(10) NULLIF ENAME=BLANKS,
  JOB CHAR(9) NULLIF JOB=BLANKS,
  MGR CHAR(6) NULLIF MGR=BLANKS,
  HIREDATE DATE "YYYY-MM-DD HH24:MI:SS" NULLIF HIREDATE=BLANKS,
  SAL CHAR(10) NULLIF SAL=BLANKS,
  COMM CHAR(10) NULLIF COMM=BLANKS,
  DEPTNO CHAR(4) NULLIF DEPTNO=BLANKS
)
    数据类型的准确性还有待验证, 并且只是Oracle的建表语法, CHAR和VARCHAR2也没有进行区分, 若有必要可进一步改善


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3