问题标签 [sqlcl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
401 浏览

java - 在 maven java 项目中使用 SQLcl

我正在尝试在我的 Maven Java 项目中使用 SQLcl,但我不知道如何使用它。

到目前为止我已经尝试过:

我从oracle下载了最新的 SQLcl (sqlcl-19.4.0.354.0937.zip) 。我将所有文件提取到本地文件夹中。然后我用终端打开 sqlcl-19.4.0.354.0937\sqlcl\lib 文件夹并运行“mvn validate”。Maven 表示缺少“ucp.jar”。我从oracle 下载中下载了那个 jar并再次运行它。这次它“似乎运行成功”。我还尝试了“mvn clean install”,结果相同。

但是,我无法在我的 m2 文件夹中的任何位置找到“ dbtools-common.jar ”、“ dbtools-http.jar ”或“ dbtools-sqlcl.jar ”文件。本教程正在解释这样做。Intellij 无法导入像“ScriptParser”这样的类,因为缺少依赖项。

这样做的正确方法是什么?

0 投票
0 回答
696 浏览

performance - 导出数据到csv文件:sqlplus vs sqlcl parallel vs pl/sql utl_file dbms_parallel_execute,哪个更快

在我的上一个项目中,我们正在处理需要读取大量数据(4000 万行)并且对于每一行我们需要触发一个流程的需求。作为设计的一部分,我们使用了多线程,其中每个线程使用具有可配置提取大小的 Jdbc 游标为给定分区提取数据。但是,当我们在 Prod 环境中的应用程序中运行该作业时,我们观察到它很慢,因为从数据库中查询数据需要更多时间。

由于我们在完成作业执行时的时间线非常紧迫,因此我们想出了一些解决方法,即数据从 SQL Developer 以 csv 文件格式导出并拆分为小文件。这些文件提供给作业。这大大提高了工作绩效,并有助于按时完成工作。

如上所述,我们使用手动步骤将数据导出到文件。如果这需要自动执行此步骤,例如从 Java App 执行导出步骤,以下选项之一(在网络上建议)将更快。

  1. sqlplus(Java 对 sqlplus 进行本机调用)
  2. sqlcl 并行假脱机
  3. 带有 utl_file 和 dbms_parallel_execute 的 pl/sql 过程

下面的链接提供了有关上述内容的一些详细信息,但没有统计信息。

https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:9536328100346697722

请注意,目前我无法访问此 Oracle 环境,因此无法从我这边进行测试。此外,我是一名应用程序开发人员,在数据库方面没有太多专业知识。因此,请向之前从事过类似用例或具有相关专业知识的人寻求建议。

提前致谢。

0 投票
1 回答
472 浏览

oracle-sqldeveloper - 使用 SQLcl 连接 Oracle 数据库

我正在使用 sqldeveloper 查询数据库并将结果导出到 csv 文件。我每天都需要这个文件,所以想创建可以在 Windows 任务调度程序上安排的 bat 文件。我正在研究它,发现我可以使用 SQLcl 来运行我的脚本来导出查询数据。但不知何故我无法连接它,它给了我错误'ORA-01017:用户名/密码无效;登录被拒绝。这是我来自 sql developer 的连接属性

在此处输入图像描述

这是我的命令行:

我安装了 java 开发工具包

在此处输入图像描述

java需要什么吗?还是我需要任何特殊权限才能运行 sql 命令行?

0 投票
1 回答
162 浏览

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

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

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

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

设置 SQLFORMATPATH 也不起作用:

0 投票
1 回答
886 浏览

windows-10 - SQLCL 与 Adoptopenjdk

我想了解一些“魔术”,这里是如何重现:

在此处获取 SQLCL:https ://www.oracle.com/fr/database/technologies/appdev/sqlcl.html

但是 SQLCL 需要 jre 1.8,所以在这里获取 AdoptOpenJDK 8:https ://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot

当 java_home 设置和 sqlcl 在 path :

我找到了两个解决方案:

  • 安装最新的官方 JRE 1.8。
  • 将 jre 从采用openjdk next(而不是 IN)复制到 sqlcl 文件夹。

注意:我在默认文件夹中安装了 openjdk,但在自定义文件夹中安装了 sqlcl,在同一个驱动器上。

你怎么解释?

(我想使用 openjdk 所以不太喜欢第一个解决方案,发现第二个有点脏......)

0 投票
3 回答
652 浏览

python - 在 python 中使用 SQLCL 运行 sql 脚本

我发现了 Oracle 的 SQLCL 并能够使其在终端中工作。通过输入实际的 SQL 查询,我还能够使其在 Python 中工作。

我在 Python 中的代码如下所示:

此时,我得到“SQL>”提示,表明 Oracle 已准备好接受我的查询。我想做的是在脚本中输入位置并执行它,例如:

基本上,我需要一种通过 Python 将 SQL 语句或脚本位置传递给 SQL 提示符的方法。

0 投票
0 回答
97 浏览

oracle - 如何创建 Oracle SQLcl 单行命令

我正在尝试使用单行查询在 Windows 10 cmd 上运行 sqlcl ...

简单地说,这就是我想要做的事情:

我知道这在 linux 中是可能的,但我得到了

错误的文件名:'SELECT

我能做的是将查询放入一个名为 test.txt 的文件中,如下所示:

并运行以下命令 - 这有效(但我试图避免使用该文件作为命令的源)

这会产生所需的查询结果(在我的例子中是这个):

一些

测试1 测试2 测试3

在系统上运行某些操作后,我需要在脚本中使用它来检查表的内容。

由于这个问题是特定于 Windows 和 sqlcl 的......我将留下答案......以下工作和客户端自动退出 - (无需退出):

0 投票
0 回答
72 浏览

sql - 如何在 PL/SQL 中并行获取所有行。我想在 csv 中为 ETL 导出 1 亿行

我想在 CSV 文件中导出 1 亿行。我正在使用 SQL DEVELOPER 和 SQL CL,但获取时间很长。我在 SQL CL 中使用以下 SQL 命令。

谁能帮助我如何更快地导出 csv 文件?

0 投票
0 回答
129 浏览

java - oracle - sqlcl.exe 登录错误:无法初始化类 sun.management.ManagementFactoryHelper

使用 oracle 的 sqlcl,我能够使用 SPOOL 在我的开发计算机上创建数据转储文件。但是,当我尝试在安装了 java 的 Windows 服务器上运行 sqlcl 时,它给出了这个错误:

C:\path>sql.exe 用户名/密码@connection_string

SQLcl:2021 年 1 月 8 日星期五 13:41:39 发布 20.3 生产

版权所有 (c) 1982, 2021,甲骨文。版权所有。

用户 = 用户名

URL = jdbc:oracle:thin:@connection_string

错误消息 = 无法初始化类 sun.management.ManagementFactoryHelper

它似乎没有被远程数据库服务器拒绝,因为我可以使用 SQL 开发人员访问数据库。似乎也不是登录凭据或连接字符串错误,因为我在我的开发计算机上测试了相同的命令并且它有效。

搜索了一圈,没有看到相关的话题。

SQLcl 版本:发布 20.3 生产

Java 版本:“1.8.0_271”

Java(TM) SE 运行时环境 (build 1.8.0_271-b09)

Java HotSpot(TM) 64 位服务器 VM(内部版本 25.271-b09,混合模式)

############ 编辑:

至于环境变量,它是:

C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1. 0;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Amazon\cfn-bootstrap;C:\Java\jre1.8.0_271; C:\Java\jre1.8.0_271\bin;C:\Java;C:\oracle\instantclient;C:\oracle

0 投票
0 回答
87 浏览

oracle - 使用 oracle jdbc 驱动程序的“提示”格式化查询输出

是否可以使用 oracle jdbc 驱动程序获得“提示”格式的查询输出?

示例查询

或者

看起来 stmt.executeQuer 只是忽略了格式化“提示”,只返回 Select * 结果

UPD:正如评论中提到的,/*insert*/“提示”特定于 SQL Developer 和 SQLcl 客户端。

我能够从 SQLcl 客户端获取查询格式的输出 在此处输入图像描述

最终目标是从 Java 代码中获取格式化的查询输出。所以重新表述这个问题:如何使用 java运行查询并通过SQLcl获取输出?