Sqlldr 接受 1 种日期格式

2023-12-11

我有一个动态生成控制文件的sql脚本文件。它接受日期格式为 mm/dd/yyyy 的日期字段。 sqlldr 正在从 csv 文件加载日期,但它也接受日期格式,例如“mm\dd\yyyy”或“mm.dd.yyyy”。我如何让它只接受 MM/DD/YYYY?

set echo off ver off feed off pages 0
accept fname prompt 'Enter Name of File: '

spool &fname..ctl


select 'OPTIONS (SKIP=1)' || chr (10) ||
       'LOAD DATA'|| chr (10) ||
       'DISCARDMAX 99999' || chr (10) ||
       'APPEND'||chr (10)||
       'INTO TABLE MY_TABLE' || chr (10)||
       'FIELDS TERMINATED BY '',''' || chr (10)||
       'OPTIONALLY ENCLOSED BY ''"''' || chr (10) ||
       'TRAILING NULLCOLS' || chr(10) ||
       ' (col1,' || chr (10) ||
       '  col2,' || chr (10) ||
       '  col3,' || chr (10) ||
       '  col4,' || chr (10) ||
       '  col5,' || chr (10) ||
       '  col6,' || chr (10) ||
       '  col7 DATE "mm/dd/yyyy",' || chr (10) ||
       '  col8 DATE "mm/dd/yyyy",' || chr (10) ||
       '  col9,' || chr (10) ||
       '  col10,' || chr (10) ||
       '  col11,' || chr (10) ||
       '  col12,' || chr (10) ||
       '  col13,' || chr (10) ||
       '  col14,' || chr (10) ||
       '  col15,' || chr (10) ||
       '  col16,' || chr (10) ||
       '  processid "' || MAX(processid) || '",' || chr (10) ||
       '  staging_id "1",' || chr (10) ||
       '  FILENAME "''&fname''",' || chr (10) ||
       '  LINENO SEQUENCE(1)' || chr (10) ||
       ' )' || chr (10)
from   process_id
where  filename = '&fname';

为什么要担心分隔符?考虑一下这个程序,它是我们的实用程序包的一个成员,我出于类似的需要而将其放在一起。您向它传递一个表名和一个分隔符,它会读取 USER_TAB_COLUMNS 并输出一个骨架控制文件,然后我将其保存到一个文件中(我使用 Toad,但当然您也可以将其假脱机到一个文件中)。我用它所有的时间。虽然不漂亮,但是满足了我的需求。进行调整以满足您的需求,我相信这可以节省您重新输入列名称和数据类型的时间。

Source:

/********************************************************************************************************
    Name:       GEN_CTL_FILE

    Desc:       Generates a skeleton control file for loading data via SQL*Loader.

    Args:       tablename_in IN VARCHAR2, delim_in VARCHAR2 DEFAULT '|'

    Returns:    None.

    Usage:      utl.gen_ctl_file('tablename');

    Notes:      Prints a skeleton control file.

                If a template for a fixed-length data file is desired, use 'FIXED' for the delim_in string.

                Example usage:

                set serveroutput on;
                execute utl.gen_ctl_file('tablename', '*');

   REVISIONS:
   Ver        Date        Author           Description
   ---------  ----------  ---------------  ------------------------------------
   1.1         6/6/2013    LanceLink        - Created procedure.
   1.2         10/8/2013   LanceLink        - Fixed decode statement. 
                                            - Added option to generate a fixed-length template.
   ************************************************************************************************************************/
  PROCEDURE GEN_CTL_FILE(tablename_in IN VARCHAR2, delim_in VARCHAR2 DEFAULT thc_utl.PIPE) IS
    ERRNULLTABLENAME     CONSTANT NUMBER        := -20103; -- User-defined error numbers and messages.
    ERRNULLTABLENAMEMSG  CONSTANT VARCHAR2(100) := 'A table name is required.';
    USAGE                CONSTANT VARCHAR2(100) := '*   USAGE: UTL.GEN_CTL_FILE(tablename_in IN VARCHAR2, fieldsep_in VARCHAR2 DEFAULT ''|'')';
    v_delim                       VARCHAR2(20)  := NVL(delim_in, utl.PIPE);

    CURSOR COL_CUR  IS
      SELECT COLUMN_NAME, 
      DECODE(COLUMN_ID, 1, ' ', ',') || RPAD(COLUMN_NAME, 32) || case upper(v_delim)
        when 'FIXED' then 'POSITION(99:99) '
        else NULL
      end|| DECODE(DATA_TYPE,
             'VARCHAR2', 'CHAR('||DATA_LENGTH||') 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 "MM/DD/YYYY" NULLIF (' || COLUMN_NAME || '=BLANKS)',
             data_type)
               AS COL_DATA
      FROM  USER_TAB_COLUMNS
      WHERE TABLE_NAME = UPPER(tablename_in)
      ORDER BY COLUMN_ID;

  BEGIN

    IF tablename_in IS NULL THEN
      RAISE_APPLICATION_ERROR(ERRNULLTABLENAME, ERRNULLTABLENAMEMSG || CR || USAGE);
    END IF;

    DBMS_OUTPUT.PUT_LINE('--');
    DBMS_OUTPUT.PUT_LINE('-- NOTE - When using DIRECT=TRUE to perform block inserts to a table,');
    DBMS_OUTPUT.PUT_LINE('--        the table''s triggers will not be used! Plan accordingly to');
    DBMS_OUTPUT.PUT_LINE('--        manually perform the trigger actions after loading, if needed.');
    DBMS_OUTPUT.PUT_LINE('--');
    DBMS_OUTPUT.PUT_LINE('OPTIONS (DIRECT=TRUE)');
    DBMS_OUTPUT.PUT_LINE('UNRECOVERABLE');
    DBMS_OUTPUT.PUT_LINE('LOAD DATA');
    DBMS_OUTPUT.PUT_LINE('APPEND');
    DBMS_OUTPUT.PUT_LINE('INTO TABLE ' || UPPER(tablename_in));
    DBMS_OUTPUT.PUT_LINE('EVALUATE CHECK_CONSTRAINTS');
    if upper(v_delim) != 'FIXED' then
      DBMS_OUTPUT.PUT_LINE('FIELDS TERMINATED BY ''' || v_delim || '''');
      DBMS_OUTPUT.PUT_LINE('OPTIONALLY ENCLOSED BY ''""''');
      DBMS_OUTPUT.PUT_LINE('TRAILING NULLCOLS');
    end if;
    DBMS_OUTPUT.PUT_LINE('(');

    -- The cursor for loop construct implicitly opens and closes the cursor.
    FOR COL IN COL_CUR
    LOOP
      IF COL.COLUMN_NAME != 'LOAD_DATE' THEN
        IF COL.COLUMN_NAME = 'LOAD_SEQ_ID' THEN
          dbms_output.put_line(','||RPAD('LOAD_SEQ_ID', 32)||'CONSTANT 0');
        ELSE
          DBMS_OUTPUT.PUT_LINE(COL.COL_DATA);
        END IF;
      END IF;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE(')' || CR);

  EXCEPTION
    WHEN OTHERS THEN
      -- if any error occurs, print the SQLCODE message.
      PRINT_ERROR;
  END; -- GEN_CTL_FILE

Run it:

exec utl.gen_ctl_file('TEST_TABLE');

Output:

--
-- NOTE - When using DIRECT=TRUE to perform block inserts to a table,
--        the table's triggers will not be used! Plan accordingly to
--        manually perform the trigger actions after loading, if needed.
--
OPTIONS (DIRECT=TRUE)
UNRECOVERABLE
LOAD DATA
APPEND
INTO TABLE TEST_TABLE
EVALUATE CHECK_CONSTRAINTS
FIELDS TERMINATED BY '|'
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
COLA                            CHAR(200) NULLIF(COLA=BLANKS)
,COLB                            CHAR(100) NULLIF(COLB=BLANKS)
,COLC                            CHAR(100) NULLIF(COLC=BLANKS)
,COLD                            INTEGER EXTERNAL NULLIF (COLD=BLANKS)
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sqlldr 接受 1 种日期格式 的相关文章

  • SQL - 需要查找重复记录但排除反向事务

    我有一张交易表 偶尔会有 重复条目 如果 当管理员发现这些重复条目时 他们将撤销交易 从而创建负值 但由于监管要求 原始重复条目仍然保留 我想创建一个 SQL 查询 并使用 Crystal Reports 来制作报告 以便管理员轻松查找重复
  • IIF(...) 不是公认的内置函数

    我正在尝试在 Microsoft SQL Server 2008 R2 中使用它 SET SomeVar SomeOtherVar IIF SomeBool value when true value when false 但我收到一个错误
  • 使用来自另一个数据库的选择查询更新 mysql 表

    我有两个数据库 我想用另一个数据库表中的值更新一个表 我正在使用以下查询 但它不起作用 UPDATE database1 table1 SET field2 database2 table1 field2 WHERE database1 t
  • 在同一查询中选择 Count of ip 和 Count of DISTINCT ip

    我有一个这样的表结构 TABLE NAME counter id datetime url ip 1 2013 04 12 13 27 09 url1 ip01 2 2013 04 13 10 55 43 url2 ip02 3 2013
  • 在Oracle中使用IW和MM

    我使用 IW 表示每周结果 使用 MM 表示每月结果 但我总是收到错误 ORA 00979 not a GROUP BY expression 00979 00000 not a GROUP BY expression 我的疑问是这些 We
  • postgresql 不同的不工作

    我使用以下代码从数据库获取值 但是当我编写这段代码时 测试看看问题出在哪里 我注意到查询没有从数据库中获取不同的值 这是查询 select distinct ca id as id acc name as accName pIsu name
  • 没有提示指令的直连接中表的顺序是否会影响性能?

    所有基于 SQL 的 RDBMS 10 年前的版本 直接连接查询 没有提示指令 中的表顺序是否会对最佳性能和内存管理产生影响 听说最后一个join应该是最大的表 您的数据库的查询优化器如何处理这种情况 回答你的问题 是的 表的顺序在连接中有
  • 处理与不同相关实体的一对多的正确模式

    我有一个 C 项目 我使用实体框架作为 ORM 我有一个User 可以向多家银行付款 每家银行都是一个独立的实体 并且每家银行都由不同的字段描述 问题是 一User可以没有或有很多不同的Banks 我不太确定如何对此进行建模 临时解决方案是
  • ALTER TABLE 语句与 FOREIGN KEY 约束冲突

    为什么要添加外键tblDomare表导致此错误 ALTER TABLE 语句与 FOREIGN KEY 约束 FK tblDomare PersN 5F7E2DAC 冲突 冲突发生在数据库 almu0004 表 dbo tblBana 列
  • SQL:如何从一个表中获取另一个表中每一行的随机行数

    我有两个数据不相关的表 对于表 A 中的每一行 我想要例如表 B 中的 3 个随机行 使用光标这相当容易 但速度非常慢 那么我该如何用单个语句来表达这一点以避免 RBAR 呢 要获得 0 到 N 1 之间的随机数 可以使用 abs chec
  • 向带有检查约束 SQL 的表添加列

    我想向表中添加一列 然后添加一个检查约束以确保其大于 0 我似乎无法让它在 oracle sl Developer 中运行 Alter TABLE store101 add column Base salary Number 7 2 con
  • 从 shell 命令调用 SOAP 请求

    我使用curl 向Web 服务发送SOAP 请求 并使用shell 脚本获取响应 请在下面找到我正在使用的命令 curl H Content Type text xml charset utf 8 H SOAPAction d sample
  • ssh远程变量赋值?

    以下内容对我不起作用 ssh email protected cdn cgi l email protection k 5 echo k 它只是返回一个空行 如何在远程会话 ssh 上分配变量 Note 我的问题是not关于如何将本地变量传
  • 在另一种语言中使用 dateFormatter [重复]

    这个问题在这里已经有答案了 我正在运行一段返回的代码nil在具有不同语言设置的 iPhone 上运行时 代码示例如下所示 let dateFormatter DateFormatter dateFormatter dateFormat MM
  • [APUE]fork后父进程和子进程是否共享相同的文件偏移量?

    在 APUE 第 8 3 节中fork function 关于父子进程之间的文件共享 它说 It is important that the parent and the child share the same file offset 在
  • 随着时间的推移累积(不重叠)——技术?

    我正在尝试找到一种更好的方法来制作水晶报告 其他人的 按组添加不重叠的时间 这显然是一个古老的问题 有没有一种技术可以得到 调整每条记录的 开始 结束 时间 以消除共同 重叠时间 亚组内 使用直接 SQL 尽管我发现我可以执行 CTE 假设
  • 使用 DISTINCT 进行查询需要很长时间

    我正在使用 Microsoft Access 2003 我的项目中的一个表单需要很长时间才能向用户显示 这是适用的查询 SELECT DISTINCT tb KonzeptDaten DFCC tb KonzeptDaten OBD Cod
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • 重用 t-sql 游标的起始位置?

    我正在开发一个在临时表上使用游标的存储过程 我已经阅读了一些关于为什么不需要游标的内容 但在这种情况下我相信我仍然需要使用游标 在我的过程中 我需要遍历表的行两次 声明游标后 已经单步执行临时表并关闭游标 重新打开时游标的位置是否仍保留在表
  • 替换字符串中的多个字符,而不使用任何嵌套替换函数

    我的表中存储了一个方程 我一次获取一个方程 并希望将所有运算符替换为任何其他字符 输入字符串 N 100 6858 6858 N 100 0 2 N 35 运算符或模式 替换字符 输出字符串 N 100 6858 6858 N 100 0

随机推荐

  • 如何检查 @patched-out python 方法是否被调用而不改变其行为?

    我一直在使用Pythonmock我的测试用例的模块 我经常用以下内容装饰我的测试用例 patch my method 装饰师 然后在测试用例的主体中 我设置了 return value属性或 side effect修补方法上的属性来模拟其行
  • 为什么 document.GetElementById 返回 null [重复]

    这个问题在这里已经有答案了 我一直在使用document GetElementById 成功了 但从一段时间开始我就无法让它再次工作了 看下面的代码 div div
  • 从 JavaScript 中的图像读取像素数据会返回半透明像素的意外结果

    我正在 JavaScript 中从 png 文件读取 RGBA 数据 为此 我在画布上绘制图像并使用 getImageData 数据与我的预期不同 测试图像 https raw githubusercontent com FlorianLu
  • “无法获取文档,因为客户端处于离线状态”Firestore 模拟器出现 Firebase 错误

    编辑 我知道这是模拟器的问题 因为没有模拟器它也能正常工作 我正在关注一个Next js 课程我正在使用 Firebase 模拟器 它建议这样做 但没有教程 因为它非常简单 并且我正在尝试为用户从 firestore 读取一些数据 但它总是
  • iOS 中的 Opengl ES 1.x 发光效果

    我目前正在开发一款 iOS 游戏 现在我想要的是一个用opengl绘制任意发光和半透明椭圆的函数 这有点棘手 因为我使用的是 cocos2d 1 1 它不支持 opengl es 2 0 所以没有着色器 这是我所做的 首先是绘制挤出线的函数
  • 意外的无符号整数行为

    我在以下代码中遇到了这种意外的输出 其中我正在验证当所有位都设置为 1 时 short 和 int 类型的无符号形式的最大值 以十进制形式表示 include
  • TypeError: __array__() 采用 1 个位置参数,但给出了 2 个(图像分类 Keras)

    如何解决这个问题 我尝试过设置dtype None in the image img to array method import tensorflow as tf from tensorflow import keras from ten
  • 如何将曲面拟合到一组数据点并获得曲面方程

    乌班图 ROS 思维 Python程序 我正在尝试获取适合点云数据中的一组点的表面方程 数据来自激光雷达扫描仪 我在 rviz 中选择整个扫描的一部分 并获得该选择的坐标选定表面的图片 所选曲面并不总是如此线性 因为材质中可能存在轻微的曲线
  • 响应式方块网格

    我想知道如何创建一个布局响应方块 每个方格都会有垂直和水平对齐内容 具体示例如下 新解决方案 2022 自从写完这个答案以来 CSS 已经发生了变化 我们现在有几个属性可以大大简化方形网格的代码 The grid属性来处理网格布局 MDN
  • 调用Service的onDestroy()

    我想打电话 onDestroy android中的Service方法 我已经在互联网上搜索了很多 很多答案都像是如果 服务强制停止或以某种方式它的 onDestroy 将永远不会调用 但我真的需要知道服务何时停止 我的项目是关于音乐播放器的
  • 检查元素在 DOM 中是否可见

    有什么方法可以检查元素在纯 JS 无 jQuery 中是否可见 那么 给定一个 DOM 元素 我如何检查它是否可见 我试过 window getComputedStyle my element display 但它似乎不起作用 我想知道我应
  • 手机锁定时如何显示弹出活动或对话框?

    我试图在手机锁定时显示活动或对话框 我尝试过使用 WakeLock 但它不起作用 并且只有在手机解锁后我才能看到活动 执行此操作的正确方法是什么 要在不关闭键盘保护的情况下显示活动 请尝试以下操作 getWindow addFlags Wi
  • 设置 ProGuard 来混淆局部变量和参数

    我似乎找不到在被混淆的类的方法内部混淆局部变量的设置 这是我反编译的一个类的摘录 其中有一些明显缺失的部分 理想情况下 方法的参数和局部变量也将被混淆 public class eA extends gu private final gt
  • SKAction playSoundFileNamed 来自 Singleton

    我有几个级别都使用相同的音效 我没有在每个级别都使用相同的代码 而是将所有声音合并到一个单例类中 但是 当我从其他类运行该方法时 将其放在单例中不会播放声音 我没有任何错误或警告 当我在每个类中都有相同的代码时 我播放声音没有问题 问题 D
  • Mac 上的 Java 类路径是如何设置的?

    Mac 上的 Java 类路径是如何设置的 既然您用以下标签标记了问题tomcat 我假设您正在运行 Java Servlet Web 应用程序 在这种情况下 类路径覆盖了 JAR 文件 WEB INF libwebapp 的文件夹和所有类
  • Python:“NoneType”对象不可下标“错误[重复]

    这个问题在这里已经有答案了 我是 Python 数据库的新手 因此为了练习一些关键技能 我正在构建一个登录屏幕 将用户名和散列密码写入数据库 然后根据数据库中的内容检查用户的输入 但是 当尝试从数据库中提取用户名和密码并将其存储在变量中时
  • css 上的 Margin-Right 不起作用

    我在学校期间一直在搞编码 因为它是我在学校最感兴趣的事情 并且在学年的大部分时间里我一直在自学 Html Css 和 Js 我一直在重新创建学校的网站 但遇到了一些问题 我的 CSS Margin Right 命令不起作用 我一直在尝试集中
  • iOS:SDWebImageManager 不缓存图像

    我正在使用创建幻灯片UIImageView 并且图像链接位于数组中 所以当我这样做时 我了解到SDWebImageManager让我们只点击 URL 一次 然后它就会缓存图像以供以后使用 但我在应用程序中监视的是 我相信第一个图像已被缓存
  • 获取变量或参数的名称[重复]

    这个问题在这里已经有答案了 我想获取变量或参数的名称 例如 如果我有 var myInput input var nameOfVar GETNAME myInput gt nameOfVar should be myInput void t
  • Sqlldr 接受 1 种日期格式

    我有一个动态生成控制文件的sql脚本文件 它接受日期格式为 mm dd yyyy 的日期字段 sqlldr 正在从 csv 文件加载日期 但它也接受日期格式 例如 mm dd yyyy 或 mm dd yyyy 我如何让它只接受 MM DD