Sql 在Oracle数据库中提取数据
我在Oracle11g中有一个名为Name:Customer的表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
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或任何其他脚本语言,则直接从脚本调用查询并将数据推送到文件中。这是最简单的方法
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)
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_文件,但我只尝试了查询。