sql - Oracle 更新生产数据库

标签 sql oracle production-environment

场景:

  • 我有一个巨大的 .csv 文件(百万行)。
  • 使用 sqlldr(SQL Loader)我必须创建一个包含 CSV 中所有数据的临时表。
  • 在此之后我必须对临时表做一些处理(大写更新一些列等)。
  • 处理后,我必须从临时表中取出每一行,进行一些额外的检查并将这些行插入到另一个表中(在生产中大量使用)。

你建议如何进行所有这些处理,这样我才不会影响生产环境的整体性能?

(注意:我不应该事先预处理 .csv)。

任何建议将不胜感激!

最佳答案

我知道您曾说过要使用 SQL Loader,但您可能想考虑使用外部表,因为它可能会使事情变得更容易。您可以将外部表声明为类似

create table EXTERNAL_HR_DATA (
    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))
    Organization external
        (type oracle_loader
         default directory testdir
         access parameters (records delimited by newline
                            fields terminated by ‘,’)
         location (‘emp_ext.csv’))
    reject limit 1000;

这将允许您使用标准 SELECT 语句读取(但不能更改)文件中的数据。然后您可以从外部表中选择并将数据直接插入到您的“临时”表中,至少在插入期间进行一些编辑:

INSERT INTO TEMP_HR_DATA
  SELECT EMPNO,
         UPPER(TRIM(ENAME)),
         UPPER(TRIM(JOB)),
         MGR,
         HIREDATE,
         SAL,
         COMM,
         DEPTNO
    FROM EXTERNAL_HR_DATA;

分享和享受。

关于sql - Oracle 更新生产数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4248027/

相关文章:

sql - 在大型数据集上优化 Oracle SELECT

sql - 更改 SQL 的根密码

sql - 微软 SQL : What is the easiest/nicest way to create a linked server with SSMS?

sql - 时间差总和 - Oracle SQL

sql - Oracle "row_limiting_clause"如何获取rowcount|百分比 PERCENT 行在 Oracle 12c 中有效吗?

reactjs - 生产中的 Express-React 应用程序出现空白屏幕 : Uncaught SyntaxError: Unexpected token < | index. html 不提供其他文件

Heroku 生产不同于本地开发(Rails)

mysql - MYSQL 中连接多个表

oracle - 选择 * 返回 CLOB

ubuntu - 有两个 docker 镜像用于生产和开发