【问题标题】:Import CSV File to H2 before Migration迁移前将 CSV 文件导入 H2
【发布时间】:2014-11-19 16:20:06
【问题描述】:

我正在尝试使用 Flyway 迁移内存中的 h2 数据库。以传统方式创建表可以正常工作,但我也想使用 h2 的导入 csv,如 here 所述。我在 Flyway 文档中找不到任何说明这不起作用的内容。支持吗?

更新:这是我正在尝试迁移的 V02__createTables.sql。该脚本位于 db.migration.test 中,Flyway 知道该目录。 csv 文件 an_products.csv 也在这个文件夹中,因此被下面的 h2 的 CSVREAD 方法引用。

CREATE TABLE an_products (
  id int(10) PRIMARY KEY NOT NULL,
  name varchar(100) NOT NULL DEFAULT '',
  price double NOT NULL DEFAULT '0.00',
  taxable tinyint(4) NOT NULL DEFAULT '0',
  notes varchar(255) DEFAULT NULL,
  isPercent tinyint(3) NOT NULL DEFAULT '0',
  min double DEFAULT NULL,
  period char(1) NOT NULL DEFAULT '',
  qty int(10) NOT NULL DEFAULT '0',
  cost double NOT NULL DEFAULT '0.00'
) AS SELECT * FROM CSVREAD('an_products.csv');

【问题讨论】:

  • 我已经删除了无用的堆栈跟踪。我想我会提供它以防万一我被要求提供堆栈跟踪。
  • 我真的很想知道flyway是否支持这个。我参考了一个示例,该示例使用了我在失败的脚本中使用的语法。

标签: java csv h2 flyway


【解决方案1】:

没有明确的支持,也没有限制。 Flyway 将通过 JDBC 执行所有语句。所以这是否有效取决于H2是否通过JDBC支持该语句。

【讨论】:

  • 嗨阿克塞尔,感谢您的回答。问题是,抛出了一个 FlyWay 异常。正如 Jarrod 所指出的,这不是一个非常有用的例外,只是迁移到版本 02 失败了。我将更新我的问题以包含 V02__createTables.sql,这是我要迁移的内容。
【解决方案2】:

首先,确保相对路径有效,也许 FlyWay 有不同的工作目录,也许只是将路径设为绝对路径。

或者使用调试器并告诉它在抛出异常时中断,这样你就知道它发生在哪里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 2022-12-12
    • 1970-01-01
    • 2011-02-17
    • 2013-07-27
    • 2019-02-02
    • 2013-08-12
    相关资源
    最近更新 更多