sql - 如何写入和读取文件
问题描述
我是新手!在在线课程上,这是这样的任务)我将创建目录的权限授予用户并创建了目录。
create or replace directory files_one as 'C:/oracle18c/app/oracle/product/18.2.0/files_one';
如何编写一个程序,将部门名称和该部门的工资金额记录在一个文件中。另外,还有一个从该文件中读取数据并通过 dbms_output 显示的过程。结果是一个将数据从此代码写入文件的过程
select d.department_name, sum(e.salary)
from employees e, departments d
where d.DEPARTMENT_ID=e.DEPARTMENT_ID
group by d.department_name;
create or replace procedure emp_deps as
cursor depts_emp is
select d.department_name, sum(e.salary)
from employees e, departments d
where d.DEPARTMENT_ID=e.DEPARTMENT_ID
group by d.department_name;
fHandl UTL_FILE.FILE_TYPE;
begin
fHandle := UTL_FILE.FOPEN('/C:/oraclexe/app/oracle/product/10.2.0/files_one','A');
for cur_rec in depts_emp loop
UTL_FILE.PUT_LINE(fHandle, cur_rec.d.department_name||','||cur_rec. sum(e.salary));
end loop;
UTL_FILE.FCLOSE(fHandle);
EXCEPTION
WHEN OTHERS THEN
UTL_FILE.FCLOSE(fHandle);
RAISE;
END;
department_id department_name
------------- ----------------
10 Administration
20 Marketing
30 Purchasing
40 Human Resources
50 Shipping
...
270 Payroll
employee_id last_name salary departments_id
------------- ---------- ------ --------------
100 King 24000 90
101 Kochhar 17000 90
102 De Haan 17000 90
103 Hunold 9000 60
104 Ernst 6000 60
...
206 William 8300 110
解决方案
您需要在UTL_FILE.FOPEN
方法中提供目录名称,如下所示:
fHandle := UTL_FILE.FOPEN('FILES_ONE', -- directory name
'files_one.txt', -- file name that you want to create or append data to
'A'); -- mode of writing
要从文件中读取数据,您需要使用SqlLoader
or External table
。您可以从 oracle 文档中了解它。
推荐阅读
- c - 如何接受用户的全部和部分输入字符串?
- python - 如何制作一个不是矩形且没有 pygame 绘图命令的墙。(如果可能)
- android - 将颤振升级到 1.20 后,文本字段在较低的 Android API 设备上出现错误
- php - PDF 下载在 Laravel 项目中不起作用
- gradle - 通过 IntelliJ build 下载 Gradle 插件失败
- ruby - Sinatra:为什么我的艺术家要保存给所有用户,而不仅仅是当前登录的用户?
- excel - VBA - WScript.Shell - 执行 PowerShell 命令
- c++ - 如何更改 Visual Studio 2019 中的默认 C++ 语言标准?
- php - WampServer 不更新 PHP 版本列表
- python - 日期验证然后是 Pytho 中有效日期的子集列表