使用 ant 进行 JDBC 复制

2023-12-01

我有一个使用 Spring、Hibernate 和 PostgreSQL 的项目,必须使用 ANT 来创建包含数据的模式:

        <sql driver="org.postgresql.Driver"
            classpath="src/main/webapp/WEB-INF/lib/postgresql-9.1-901.jdbc4.jar"
            url="jdbc:postgresql://localhost:5433/postgres"
            userid="postgres"
            password="pw123"
            autocommit="true"
            src="src/main/sql/dbbackup.sql">
        </sql>

但我收到此错误:

C:\Users\<user>\<workspace>\<Project>\antdb.xml:22: org.postgresql.util.PSQLException: ERROR: COPY from stdin failed: The JDBC driver currently does not support COPY operations.

不知道我们是否可以在这里使用 postgresql.copy 类?


PgJDBC 不支持COPY直接,但它是通过CopyManager您可以从以下位置获取 APIPGConnection的接口java.sql.Connection由 PgJDBC 返回。

不幸的是,你不能从混合的纯 SQL 文件中使用它COPY与其他命令的操作。

就我个人而言,我会花钱去psql to run .sql使用 Ant 的文件<exec>任务。这样你就可以包括COPYSQL 文件中的内联数据。

最好启用 PgJDBC 来处理COPY,但这并不容易。它实际上是 PostgreSQL 中的一种不同的协议模式,使用带有准备好的语句、执行等的常用 JDBC 接口没有多大意义。我们可以提供一个execSQLScript就习俗而言PGconnection但这对你没有多大帮助,因为像 Ant 这样的东西<sql>任务不会使用它。您必须编写一个自定义任务。

相反,PgJDBC 必须对客户端撒谎——当它进入时COPY模式后COPY命令,它必须忽略 JDBC 规范,并且不会真正执行它应该执行的操作来响应 JDBC 语句的执行。这可能会破坏各种各样的东西。

所以 - 目前为止,最简单的选择就是执行psql命令做你想做的事。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ant 进行 JDBC 复制 的相关文章

随机推荐

  • 限制文本框中的数字和字母 - C#

    我想限制可以在文本框中输入的数字和字母 假设我只想允许数字 0 5 和字母 a d 小写和大写 我已经尝试使用屏蔽文本框 但它只允许我指定数字 字母 均无限制 或数字和字母一起但按特定顺序 最好的情况是 用户尝试输入数字 6 但文本框中没有
  • 使用 Trace 函数以 Haskell 的 do 表示法进行惰性求值

    我想知道为什么这个 调试消息 1 没有打印在这个片段中 import Debug Trace main do return trace debug message 1 trace debug message 2 return 第二个 调试消
  • 与新的导航堆栈结合时发现 @State 的奇怪行为 - 这是一个错误还是我做错了?

    我已将我的 swiftui 应用程序转换为新的导航栈以编程方式管理使用导航堆栈 路径 visibilityStack 这样做时 我发现 State 的意外行为让我认为视图没有正确关闭 事实上 当我用堆栈中的另一个视图替换该视图时 State
  • 如何通过选择随机变量在 Python 中执行随机事件?

    假设我必须变量 狗和猫 Dog 5 cat 3 我如何告诉 Python 随机选择这些变量之一并将其打印到屏幕上 import random print random choice dog cat 就是这么简单 choice 获取一个序列并
  • Pygame:尝试理解 Sprite 类

    我发现在Pygame 文档一个名为Sprite 我读了解释 但不明白这个类是用来做什么的 我知道我们用它来通过构造函数继承其他类 但仅此而已 如果有人有明确的解释用处班级的 以及如何用好 我有兴趣 是的 所以移动鼠标光标 那是一个精灵 它是
  • 内部服务器错误[重复]

    这个问题在这里已经有答案了 我正在开发一个短信发送应用程序 出于登录目的 我想使用 POST 方法将用户名和密码从我的 Android 应用程序发送到 Web 服务器 当我单击登录按钮时 应用程序没有响应 并且控制台打印以下消息来响应 Po
  • ReactJS:使用alert()获取用户输入

    我该如何使用alert 允许用户输入他们的名字并将其保存到状态 这是我到目前为止所做的尝试 render function return div div
  • 如何在 C# 中检查 Excel 文件的版本?

    我需要区分所选文件是使用所选 Excel 文件的 Excel 2010 或 Excel 2013 版本创建的 并且服务器上的 Excel 应用程序必须匹配才能继续 我可以获得服务器的Excel应用程序版本 xApp new Microsof
  • 如何将 Base64 格式的文件附加到 Laravel 5.2 邮件

    我有 Angular 应用程序作为前端 Laravel 5 2 作为 api 后端 我的角度应用程序将参数发送到我的 laravel 控制器 name My Name email email protected subject Hello
  • Django模型时间范围过滤方法

    我在一个老问题中看到了接下来的两种方法here但我不清楚以下之间有什么区别 date time field range datetime datetime combine date datetime time min datetime da
  • 在 Papertrail 中显示单个记录的所有版本

    我正在构建一个联赛系统 目前它根据结果存储和更新玩家的 elo 得分 现在 我尝试添加 HighCharts 以漂亮的折线图显示球员在整个赛季的 elo 得分 有人建议我使用 Papertrail 来存储更新 我已经全部安装了 现在我的问题
  • Jenkins 和 Windows 批处理返回代码

    我使用 Jenkins 在 Windows 机器上 作业通过 Ant 为不同目标编译一些代码 为此 我将对 ant 目标的调用包装在 Windows 批处理循环中 如下所示 echo off for t in target1 target2
  • 基于第一个下拉菜单的第二个下拉选项

    在网页上 如果您在第一个下拉列表中选择不同的选项 则第二个下拉列表中将出现不同的选项
  • 我已启用 V8 运行时,但尝试保存时出现错误:“很抱歉,发生服务器错误。请稍等一下,然后重试。”

    我得到了 很抱歉 服务器发生错误 请稍等一下 然后重试 当尝试保存脚本时 如果我按原样运行脚本 它将运行旧版本 这是我的代码 function myFunction var ss2 SpreadsheetApp getActiveSprea
  • '字符不可用'请直接使用字符串

    我不知道如何解决它 我只是想了解它是如何工作的以及应该替换什么 我已经尝试过删除characters 但还是不行 import Foundation var shrinking String hello repeat print shrin
  • 如何在WinForm组件的UI线程上调用?

    我正在编写一个 WinForm 组件 在其中启动一个任务来进行实际处理并捕获延续中的异常 从那里我想在 UI 元素上显示异常消息 Task myTask Task Factory StartNew gt SomeMethod someArg
  • 如何让 Chrome 扩展程序在页面加载时自动单击按钮?

    我正在尝试创建一个在页面加载时按下按钮的 Google Chrome 扩展程序 我已经能够通过以下代码使用 VBscript for Internet Explorer 触发该按钮 IE Navigate javascript change
  • 如何将日期作为参数插入mysql?

    我有以下代码 function dbInsert global dbcon dbtable global inputData sqlQuery INSERT INTO dbtable id author date title descrip
  • 能够点击 Java 应用程序

    我有一个简单的程序 它可以显示一个带有图像的透明窗口 该窗口始终位于其他窗口的顶部 是否可以直接输入我的应用程序 以便我可以单击下面的程序 例如 窗口位于桌面背景上方 我希望能够单击图标而不是 覆盖应用程序 Thanks Using JNA
  • 使用 ant 进行 JDBC 复制

    我有一个使用 Spring Hibernate 和 PostgreSQL 的项目 必须使用 ANT 来创建包含数据的模式