当前位置: 首页 > 知识库问答 >
问题:

Oracle sqlcl格式在格式化文件时忽略自定义规则

上官英哲
2023-03-14

sqlcl在格式化缓冲区时似乎使用格式化规则,但在格式化文件时忽略它们。

我有一个输入文件(test.sql)和一小套格式化规则(format.xml)

[abayley@abayley1 ~]$ cat test.sql
SELECT * from DUAL;

[abayley@abayley1 ~]$ cat format.xml
<options>
<useTab>false</useTab>
<idCase>oracle.dbtools.app.Format.Case.lower</idCase>
<kwCase>oracle.dbtools.app.Format.Case.lower</kwCase>
</options>

显示应用于缓冲区而非文件的规则的sqlcl会话:

[abayley@abayley1 ~]$ sql username/password@server.fqdn:1521/dbname

SQLcl: Release 20.2 Production on Tue Aug 25 07:43:00 2020

Copyright (c) 1982, 2020, Oracle.  All rights reserved.

Connected to:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production

SQL> @test.sql

   DUMMY
________
X

SQL> format rules format.xml
Formatter rules loaded
SQL> format buffer
  1  select
  2      *
  3  from
  4*     dual;
SQL> format file test.sql test2.sql
SQL>
Disconnected from Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production

[abayley@abayley1 ~]$ cat test2.sql
SELECT
    *
FROM
    dual;
[abayley@abayley1 ~]$

设置SQLFORMATPATH也不起作用:

[abayley@abayley1 ~]$ export SQLFORMATPATH=format.xml
[abayley@abayley1 ~]$ sql username/password@server.fqdn:1521/dbname

SQLcl: Release 20.2 Production on Tue Aug 25 08:06:26 2020

Copyright (c) 1982, 2020, Oracle.  All rights reserved.

Connected to:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production

SQL> SELECT * from DUAL;

   DUMMY
________
X

SQL> format buffer
  1  SELECT
  2      *
  3  FROM
  4*     dual;
SQL> exit

共有1个答案

鄢承运
2023-03-14

将文件加载到缓冲区中,在那里格式化并保存回来可能是一种解决方法:

  format rules format.xml
  get test.sql nolist
  format buffer
  save test.sql replace
 类似资料:
  • 本文向大家介绍.NET Framework 格式:自定义DateTime格式,包括了.NET Framework 格式:自定义DateTime格式的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 在哪里可以找到用于将规则导入到Sonar的XML文件的好文档和/或模式?在http://javadocs.sonarsource.org/5.1/apidocs/org/Sonar/api/server/rule/rulesdefinitionxmlloader.html上有一些文档,但是它并不准确(例如,description标记为可选,但是Sonar如果缺少它就会失败),并且没有描述每个元素代

  • 我正在使用Apache POI解析Excel。是否可以让Apache POI将空字符串视为null并忽略它们? 可能有excel表将数百万个单元格设置为文本,如下所示,导致所有单元格被Apache POI解释为空字符串。由于有数百万个空的字符串单元格,逐个单元格地检查会导致严重的性能问题: 无论如何,Apache POI是否可以忽略这些空字符串单元格,这样我们就不必逐个单元格地单独读取单元格来检查

  • 我想通过LLCP在一个NDEF记录中的NDEF消息中传输一个自定义数据(或者有效载荷可能会被分块到几个NDEF中)。传输的内容是具有特定格式的文件,仅在特定应用中具有意义。那么,指定NDEF头的最佳方法是什么? 1) 将TNF设置为0x04(NFC论坛外部类型),0x03(绝对URI)或0x05(未知)?0x04将在 TYPE 字段中具有自定义相对 URI,如果是绝对 URI,则0x03绝对 UR

  • 是否有一个Maven插件来根据自定义的Checkstyle配置格式化源代码? 我想知道是否有类似于Spotless命令,但用于Checkstyle(不依赖IDE插件)。