【问题标题】:hibernate - return insert script from a query resulthibernate - 从查询结果返回插入脚本
【发布时间】:2014-10-17 02:44:36
【问题描述】:

是否有我可以利用的现有库/框架允许我从查询结果生成INSERT mysql 脚本。

例如,在 HQL 中我有:

SELECT book FROM book b WHERE b.created >= :today

我将拥有文本而不是List<Book>

INSERT INTO book VALUES (...)

或者无论如何我可以将休眠实体列表转换为 mysql 脚本INSERT INTO 脚本。

我们将不胜感激。

谢谢!

【问题讨论】:

    标签: java mysql database hibernate jpa


    【解决方案1】:

    你可以这样写一个 SELECT 查询:

    SELECT 'INSERT INTO book (id, name, isbn) VALUES ('|| b.id ||','|| b.name ||','|| b.isbn ||');' FROM book b;
    

    你需要注意VARCHAR列,因为值需要用引号转义。

    【讨论】:

    • 这看起来不错,谢谢,虽然它返回 null,但是当我使用 concat() 时它工作正常。
    • 对于空值,您可以使用 NULLIF。
    【解决方案2】:

    您可以为此使用mysqldump

    mysqldump -u username -p dbname book --compact --no-create-info --where="created >= '2014-10-01'" > dump.sql
    

    这将为匹配 WHERE 子句 book.created >= '2014-10-01' 的表行生成 INSERT INTO 语句

    【讨论】:

    • 我将通过 java 代码需要它。而且我不需要整个数据库,我只想要查询结果的创建语句。
    • 它将只返回单个表的选定行
    • 很抱歉,您有一个 where 子句。但我将通过 java 代码需要它,其中返回将是 List insertStatements
    猜你喜欢
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多