1

从命令行运行包含 WbExport(使用 Select 语句)的 sql 脚本时,我遇到了一个问题。目标文件夹中缺少 txt 文件和导入 sql 脚本命令提示符显示语句已执行,但我认为执行命令时选择语句未运行。

在不使用 Select 语句的情况下,我得到了所需的输出文件,但 Import SQL 脚本中缺少列名,这就是我在 WbExport 中尝试 Select 语句方法的原因。

命令:

java -jar sqlworkbench.jar -profile=New_profile -script=cmd_test.sql 

sql脚本(cmd_test.sql):

WbExport 
    -type=text
    -file='D:\Migration\CMD_TEST\employee.txt'
    -delimiter='~'
    -quotechar='^'
    -encoding=UTF8
    -quoteCharEscaping=duplicate
    -formatFile=postgres
    -header=true
    -decimal='.'
    -dateFormat='yyyy-MM-dd'
    -replaceExpression='(\n|\r\n)' -replaceWith='';
select * from ces_prj_raymond_poc.dbo.employee; ------------I think this statement is not executing.

txt数据文件和表的导入sql脚本

4

1 回答 1

0

这已交叉发布到 SQL Workbench/J支持组

问题是新的 Microsoft JDBC 驱动程序对某些 JDBC API 调用的参数处理不正确,并且不再支持通配符。SQL Workbench/J 在调用 eg 之前转义标准 SQL 通配符DatabaseMetaData.getColumns()。显然,从 7.4 版开始的 Microsoft JDBC 驱动程序不再使用 LIKE 语句,因此方法调用(使用转义通配符)不会返回任何内容。

通过设置配置属性,可以在 SQL Workbench/J 中禁用转义通配符。通过手动编辑 workbench.settings 并添加:

workbench.microsoft_sql_server.metadata.retrieval.wildcards=false

在编辑文件之前,请确保 SQL Workbench/J 已关闭。


这也可以在不重新启动应用程序的情况下进行配置。

当连接到 SQL Server 数据库时,这也可以在 SQL Workbench/J 中通过运行以下 Workbench 命令来完成:

WbSetDBconfig metadata.retrieval.wildcards=false;
于 2019-11-01T06:44:22.660 回答