首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用Oracle PL/SQL修改文本文件

用Oracle PL/SQL修改文本文件
EN

Database Administration用户
提问于 2014-08-01 05:55:43
回答 1查看 4.7K关注 0票数 2

我试图用以下过程打开并替换文本文件中的字符串:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BEGIN
v_file_name := 'text_file.txt';
v_filehandle := utl_file.fopen(v_file_dir, v_file_name, 'W');
v_id_nextval := v_id_nextval + 1;
BEGIN
LOOP
    utl_file.get_line(v_filehandle, v_new_line);
    v_new_line := replace(v_new_line, 30690, v_id_nextval);
    EXIT WHEN v_new_line IS NULL;
  END LOOP;
END;
utl_file.fclose(v_filehandle);

问题是,在运行此过程后,文本文件将变为空。如果我将“W”替换为“R”,则

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
v_filehandle := utl_file.fopen(v_file_dir, v_file_name, 'W');

变量的值被正确替换,但文本文件中没有任何更改,因为它只有读取访问权限。

我是做错什么了还是根本不可能?

PS:我正在使用Oracle 9i。

致以问候。

EN

回答 1

Database Administration用户

发布于 2014-08-01 06:48:32

是的,“W”会这样做的--替换文件。用'A‘来追加。我认为您不能“就地修改”;您可能需要将文件复制到一个新的文件中,进行您想要的更改,删除原始文件,然后重命名该副本。

所有这些都回避了一个问题,为什么您要尝试在PL/SQL中完成所有这些工作。在用Python编写的外部程序中进行调用可能会更好一些--当然更容易一些。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/72941

复制
相关文章
PL-SQL温习
1.SELECT PRODUCT_NAME, PRODUCT_PRICE*0.8 FROM PRODUCT
liulun
2022/05/09
5440
Oracle sql语句修改表名
create table xintable as select * from oldTable;//在原表的基础上建立新表
全栈程序员站长
2022/08/30
1.4K0
【SQL】用SSMS连接Oracle手记
我想在A机用ssms连C机的oracle,一番了解,普遍做法是装ODAC xcopy包,里面有oledb组件,然后就可以在sqlserver的链接服务器里添加oracle数据库。如图:
AhDung
2020/04/10
2.3K0
【SQL】用SSMS连接Oracle手记
pl sql 循环_sql循环语句怎么写
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/07
3.1K0
pl sql 循环_sql循环语句怎么写
Oracle修改字段类型Sql –ORA-01439
1、假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter table tb modify (name nvarchar2(40));
全栈程序员站长
2022/09/01
4890
pl sql 查看历史执行过的sql记录
现在越来越多人用plsql 查询和执行sql,因为该工具很方便,不仅可以执行sql、以及命令窗口,但是呢,有时候我们执行完sql,可能忘记保存或者当时觉得可能不怎么重要,就没有保存,
小小鱼儿小小林
2020/06/24
3.6K0
pl sql 查看历史执行过的sql记录
OushuDB-PL 过程语言-PL/pgSQL - SQL过程语言
OushuDB兼容PostgreSQL,允许使用除了 SQL 和 C 之外的其他语言编写用户定义的函数。这些其他的 语言通常被称作过程语言(Procedural Language, PL)。对于一个用过程语言编写的函数,数据库服务 器没有关于如何解释该函数的源文本的内建知识。因此,这个任务被交给一个了解语言细节的特殊处理 器。该处理器能够自己处理所有的解析、语法分析、执行工作,或者它可以作为一种PostgreSQL和编程 语言既有实现之间的“粘合剂”。就像任何其他 C 函数一样,处理器本身是一个编译到共享对象并且按需 载入的 C 语言函数。 在OushuDB的标准发布中当前有四种过程语言可用: PL/pgSQL、 PL/Perl、 PL/Python以及 PL/Java, 其中PL/pgSQL是默认安装可用的。 另外还有其他过程语言可用,但是它们没有被包括在核心发布中, 如PL/R等,我们可以在第三方开源网站来获取它们的源码。 接下来我们主要看一下 PL/pgSQL - SQL过程语言。 PL/pgSQL - SQL过程语言 PL/pgSQL 是 PostgreSQL 数据库系统的一个可加载的过程语言,它的设计目标是创建一种可加载的过 程语言,可以: 用于创建函数和触发器过程 为 SQL 语言增加控制结构 执行复杂的计算 继承所有用户定义类型、函数、操作符 定义为被服务器信任的语言 容易使用 除了用于用户定义类型的输入/输出转换和计算函数以外,任何可以在 C 语言函数里定义的东西都可以在 PL/pgSQL 里使用。比如,可以创建复杂的条件计算函数,并随后将之用于定义操作符或者用于函数索 引中。 一、概述: PL/pgSQL函数在第一次被调用时,其函数内的源代码(文本)将被解析为二进制指令树,但是函数内的表 达式和SQL命令只有在首次用到它们的时候,PL/pgSQL解释器才会为其创建一个准备好的执行规划,随 后对该表达式或SQL命令的访问都将使用该规划。如果在一个条件语句中,有部分SQL命令或表达式没 有被用到,那么PL/pgSQL解释器在本次调用中将不会为其准备执行规划,这样的好处是可以有效地减少 为PL/pgSQL函数里的语句生成分析和执行规划的总时间,然而缺点是某些表达式或SQL命令中的错误只 有在其被执行到的时候才能发现。 由于PL/pgSQL在函数里为一个命令制定了执行计划,那么在本次会话中该计划将会被反复使用,这样做 往往可以得到更好的性能,但是如果你动态修改了相关的数据库对象,那么就有可能产生问题,如:
用户7454708
2023/05/08
7070
用TPC-DS测试Sql server,Oracle
TPC-DS是TPC组织发布的用于测试决策系统的基准测试,是TPC-H的改进版。我们可以用它生成测试数据集和sql语句来测试数据库的OLAP能力。 最近我们用TPC-DS测试了一下Sql server和Oracle,这里把遇到的问题记录一下。首先说一下结论,我以后再不相信TPC的测试结果了,这个软件给我的感觉是根本没人维护,文档散乱无序,体验糟糕至极。
大神带我来搬砖
2019/05/17
1.4K0
[转自JeffreyZhao]在LINQ to SQL中使用Translate方法以及修改查询用SQL
目前LINQ to SQL的资料不多——老赵的意思是,目前能找到的资料都难以摆脱“官方用法”的“阴影”。LINQ to SQL最权威的资料自然是MSDN,但是MSDN中的文档说明和实例总是显得“大开大阖”,依旧有清晰的“官方”烙印——这简直是一定的。不过从按照过往的经验,在某些时候如果不按照微软划定的道道来走,可能就会发现别样的风景。老赵在最近的项目中使用了LINQ to SQL作为数据层的基础,在LINQ to SQL开发方面积累了一定经验,也总结出了一些官方文档上并未提及的有用做法,特此和大家分享。
菩提树下的杨过
2018/01/24
4.9K0
[转自JeffreyZhao]在LINQ to SQL中使用Translate方法以及修改查询用SQL
Oracle 快速卸载数据到文本文件
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/53894921
用户1148526
2019/05/25
1.1K0
oracle数据库sys密码修改_oracle修改system密码
Oracle提供两种验证方式,一种是OS验证,另一种密码文件验证方式,如果是第一种方式用以下方法修改密码:
全栈程序员站长
2022/09/19
3.8K0
oracle修改表字段
增加字段     alter   table   docdsp     add   dspcode   char(200)     删除字段     ALTER   TABLE   table_NAME   DROP   COLUMN   column_NAME     修改字段类型     ALTER   TABLE   table_name     ALTER   COLUMN   column_name   new_data_type     改名     sp_rename    
cloudskyme
2018/03/20
9630
ORACLE修改表信息
ALTER TABLE t_jk_MBSZSHXGXXB MODIFY KSSJ NVARCHAR2(20) --修改字段类型
用户5640963
2019/07/28
2.1K0
Oracle修改编码
安装Oracle时默认的编码就是ZHS16GBK 如果安装时选了别的编码 怎样把编码改回来呢 下面就说一下怎样把数据库编码改回ZHS16GBK
码客说
2019/10/22
1.2K0
spark sql hive批量导入文本文件
在很多情况下,会需要将批量生成(如按天生成的记录)导入到HIVE中。针对这种应用场景,进行实验。
sparkexpert
2022/05/07
5930
spark sql hive批量导入文本文件
Oracle 修改oracle数据库名
2.确保数据库处于mount,非open状态,并且在加载前先以immediate方式关闭。如:
授客
2019/09/12
3.1K0
Oracle 修改oracle数据库名
SQL修改语句
UPDATE <表名> SET 字段1=值1, 字段2=值2, … WHERE …;
全栈程序员站长
2022/07/02
2K0
SQL修改语句
oracle r修改表名,oracle中修改表名「建议收藏」
ALTER TABLE old_table_name RENAME TO new_table_name;(大写为系统命令)
全栈程序员站长
2022/08/29
2K0
Oracle Sql优化
3.Oracle在执行IN子查询时,首先执行子查询,将查询结果放入临时表再执行主查询。而EXIST则是首先检查主查询,然后运行子查询直到找到第一个匹配项。NOT EXISTS比NOT IN效率稍高。但具体在选择IN或EXIST操作时,要根据主子表数据量大小来具体考虑。
斯文的程序
2019/11/07
1.4K0
Oracle9i第2版中的UNT_FILE提高了文件输入/输出(I/O)功能。
技术 PL/SQL 提高文件操作功能 作者:Steven Feuerstein Oracle9i第2版中的UNT_FILE提高了文件输入/输出(I/O)功能。 有些人可能会说你可以在Oracle数据库中包含和表示整个世界,甚至是整个宇宙。这或许是真的,但我们中仍有一些人希望能够从我们的PL/SQL程序内部处理操作系统(OS)文件。有了这个愿望,开发人员在很长时间内就同UTL_FILE包之间有了一种爱憎交加的关系。 相关链接 Oracle技术网站(OTN)上关于UTL_FILE的示例 ot
阿新
2018/04/09
1.2K0

相似问题

Oracle PL/SQL tns异常处理

30

Oracle PL/SQL查找最近的对象

10

Oracle PL/SQL:触发器语法

10

从oracle pl sql游标中提取值。

10

停止PL/SQL developer或Oracle SQL Developer中的错误

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文