Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在Oracle数据库中提取数据_Sql_Oracle_Stored Procedures_Extract - Fatal编程技术网

Sql 在Oracle数据库中提取数据

Sql 在Oracle数据库中提取数据,sql,oracle,stored-procedures,extract,Sql,Oracle,Stored Procedures,Extract,我在Oracle11g中有一个名为Name:Customer的表 ID|Name |Country 1 |Mark |USA 2 |Allan|UK 3 |James|USA 4 |Todd |UK 5 |Mike |UK 我有一个文本文件list.txt ID 1 3 5 我需要在文本文件中导出结果 result.txt 1 |Mark |USA 3 |James|USA 5 |Mike |UK 基本上,我需要在Customer表中提取记录ID 1、3、5,并将其保存到文本文件(resu

我在Oracle11g中有一个名为Name:Customer的表

ID|Name |Country
1 |Mark |USA
2 |Allan|UK
3 |James|USA
4 |Todd |UK
5 |Mike |UK
我有一个文本文件list.txt

ID
1
3
5
我需要在文本文件中导出结果

result.txt

1 |Mark |USA
3 |James|USA
5 |Mike |UK

基本上,我需要在Customer表中提取记录ID 1、3、5,并将其保存到文本文件(result.txt)中。这可以在存储过程或脚本中完成。

可以使用外部表从文件中获取数据,并将其与表连接,并在存储过程中使用utl_文件导出数据

但如果您使用的是shell或任何其他脚本语言,则直接从脚本调用查询并将数据推送到文件中。这是最简单的方法

  • 创建一个表列表(ID号)以存储list.txt的内容
  • 使用命令sqlldr将list.txt导入表列表

    sqlldr数据库用户/db_password@DB_SERVICEcontrol=D:\list.ctl

    list.ctl内容:

    `SET echo OFF`
    
    `SET feedback OFF`
    
    `SET pagesize 0`
    
    `SET term OFF`
    
    `SET trims ON`
    
    `SET timing OFF`
    
    `SET verify OFF`
    
    `SPOOL D:\result.txt`
    
    `select a.id || '|' || a.name || '|' || a.Country From Customer a, list b`
    
    `where a.id = b.id;`
    
    `SPOOL OFF`
    
    `quit`
    
    加载

    infle'D://list.txt'

    截断为表测试

    以“|”结尾的字段

    (id)

  • 3.从oracle表导出查询结果:
    sqlplus-S数据库用户/db_password@DB_SERVICE@D:\run.sql

    run.sql内容:

    `SET echo OFF`
    
    `SET feedback OFF`
    
    `SET pagesize 0`
    
    `SET term OFF`
    
    `SET trims ON`
    
    `SET timing OFF`
    
    `SET verify OFF`
    
    `SPOOL D:\result.txt`
    
    `select a.id || '|' || a.name || '|' || a.Country From Customer a, list b`
    
    `where a.id = b.id;`
    
    `SPOOL OFF`
    
    `quit`
    

    你试过什么?你被困在哪里?您知道如何将文本文件中的数据加载到Oracle(SQL*加载器或外部表,具体取决于文件的位置)中吗?您知道如何编写查询来连接这两个表吗?您知道如何使用UTL_文件生成输出文件吗?我不知道如何使用UTL_文件,但我只尝试了查询。