小编Joh*_*yle的帖子

使用SQL*Loader更新表中的列?

我编写了一个具有以下查询的SQL脚本.查询工作正常.

update partner set is_seller_buyer=1 where id in (select id from partner 
where names in 
(
'A','B','C','D','E',... // around 100 names.
));
Run Code Online (Sandbox Code Playgroud)

但现在我不想在查询中写入大约100个名称,而是想从CSV文件中获取所有名称.我在互联网上阅读了关于SQL*Loader但我对更新查询没有太多了解.我的csv文件只包含名称.

在此输入图像描述

我试过了

  load data
  infile 'c:\data\mydata.csv'
  into table partner set is_wholesaler_reseller=1
  where id in (select id from partner 
  where names in 
  ( 
  'A','B','C','D','E',... // around 100 names.
  ));
  fields terminated by "," optionally enclosed by '"'         
  ( names, sal, deptno )
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?提前致谢.

sql oracle sql-loader

5
推荐指数
1
解决办法
2万
查看次数

Oracle PL/SQL中的延迟更新

我有一个简单的PL/SQL过程,有一个游标,我迭代它.在每次迭代中,我都会创建一个UPDATE语句(在对数据执行某些业务逻辑之后).

但是,如果有很多迭代(数万个),这可能会变得非常慢,因为在每次迭代中都有单个UPDATE语句.

有没有办法以某种方式"延迟"这些更新,以便它们一次性执行(因此更快).

编辑:Oracle 11

oracle performance plsql oracle11g

4
推荐指数
1
解决办法
1012
查看次数

PL/SQL Raw数据类型变量比较

是否可以比较原始数据类型的变量?我正在使用XMLDOM.DomNodes,它是一个具有一个字段的记录:

TYPE DOMNode IS RECORD (id RAW(12));
Run Code Online (Sandbox Code Playgroud)

所以我有两个节点,那么我可以通过它们的id字段来比较它们吗?我尝试了几个样品,乍一看似乎有效:

  FUNCTION findParentNode(p_node IN xmldom.domnode) RETURN PLS_INTEGER
  AS
      nRetVal               PLS_INTEGER;
  BEGIN
     FOR i IN ParentNodes.First .. ParentNodes.Last
     LOOP 
         IF ParentNodes(i).id = p_node.id THEN               
            nRetVal := i;
            EXIT;
         END IF;         
     END LOOP;

     RETURN nRetVal;
  END;
Run Code Online (Sandbox Code Playgroud)

但Oracle文档中有一两件事让我担心: 原始数据是像VARCHAR2数据,只是PL/SQL不解释原始数据 是什么意思?如果pl/sql不解释raw,那么它可以比较吗?

oracle plsql xmldom dom-node

4
推荐指数
1
解决办法
7549
查看次数

oracle中的dense_rank()分析函数

SELECT empno, deptno
dense_rank() OVER (PARTITION BY deptno
     ORDER BY sal NULLS LAST) SRLNO
FROM emp
WHERE deptno IN (10, 20)
group by empno, deptno  --,sal
ORDER BY deptno, SRLNO;
Run Code Online (Sandbox Code Playgroud)

此查询不起作用,因为它Sal应该在group by子句中.任何人都可以解释为什么会这样,并且有没有其他选择在不改变group by子句的情况下获得相同选择的排名?你想只根据工资订购排名.

编辑
假设在emp表中有另一个列名commision,我必须通过deptno和commision分组并仅通过deptno进行分区,那么建议的答案是什么:

    SELECT empno, deptno,sum(sal) 
    dense_rank() OVER (PARTITION BY deptno
     ORDER BY sal NULLS LAST) SRLNO
    FROM emp
    WHERE deptno IN (10, 20)
    group by  deptno,commision  --,sal
    ORDER BY deptno, SRLNO;
Run Code Online (Sandbox Code Playgroud)

现在我如何通过depno和commision进行分组,并且只能通过deptno进行分区.

如何在不同的列上进行分组并根据不同列的分区查找排名

sql oracle analytic-functions oracle10g

3
推荐指数
1
解决办法
3361
查看次数

Oracle中的SQL查询删除时间或将其设置为默认值00:00:00而不影响日期

如何从oracle数据库中的datetime列中删除时间并将其保存回来,默认时间为00:00:00,而不会影响任何日期.

例如:我有一个列数据类型的日期时间,并有数千条记录,包括日期和时间.我希望保留所有日期,并将默认时间设置为00:00:00或从此列中的所有记录中完全删除它.请让我知道任何查询吗?

sql oracle

3
推荐指数
1
解决办法
1118
查看次数

删除 Application Express 工作区

我正在使用 oracle applicationexpress (11g),我想删除一个工作区和一个用户。可能找不到这方面的任何资源。

谢谢

oracle oracle11g oracle-apex

3
推荐指数
1
解决办法
1万
查看次数

Oracle SQL中出现意外输出

在执行查询时

select * from employee
where salary <= previous_salary
Run Code Online (Sandbox Code Playgroud)

我得到一个错误的输出如下(它返回整个表).我在Oracle Application Express Edition中这样做

ID  NAME    SALARY  DEPT    PREVIOUS_SALARY
1   nadeem  1000    10      1500
2   kutu    1000    10      1500
3   aisha   1500    20      500
4   aisha   1500    20      500
Run Code Online (Sandbox Code Playgroud)

并执行此查询

select * from employee
where salary >= previous_salary
Run Code Online (Sandbox Code Playgroud)

我没有找到数据.

sql oracle oracle11g

2
推荐指数
1
解决办法
72
查看次数

Oracle SQL - 生成并更新每行中具有不同随机数的列

需要SQL帮助 - 我想用不同的随机数生成和更新每一行的列.

数据库#Oracle 10g.

示例 - 当我执行类似这样的操作时,它会更新具有相同编号的所有行

update mytable r 
set r.generated_num = 
(select floor(dbms_random.value(100,9999999)) from dual).
Run Code Online (Sandbox Code Playgroud)

有什么建议?

sql oracle random oracle10g

2
推荐指数
1
解决办法
8559
查看次数

我们可以获得带引号的Oracle Value吗?

我需要在Oracle SQl中使用Quotes Example获取一个值

SQL: SELECT mrpid from demandbasic;

MRPID
------------
DEM#000001
Run Code Online (Sandbox Code Playgroud)

我需要得到结果

MRPID
------------
'DEM#000001'
Run Code Online (Sandbox Code Playgroud)

如何根据需要获得结果

sql oracle

2
推荐指数
2
解决办法
5504
查看次数

Sql loader条件

我可以在SQL LOADER中执行类似的操作吗?

LOAD DATA
INFILE 'table_with_one_million_rows.dat'
INTO TABLE TABLE_WITH_ONE_MILLION_ROWS
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(
   COL1                     DECIMAL 
 , COL2                     DECIMAL IF COL1='X' '1' else '0'
 , COL3                     CHAR 

)
Run Code Online (Sandbox Code Playgroud)

oracle plsql sql-loader

2
推荐指数
1
解决办法
2278
查看次数