0

我正在尝试使用 mysql-connector-java-5.1.15 通过 ant 任务在 mysql 服务器上运行以下 sql 脚本,但它不起作用,并且在第三个命令上出现以下错误。我可以让其他脚本从 ant 正常工作,所以这不是连接问题。

您的 SQL 语法有错误;检查对应的手册
您的 MySQL 服务器版本,以便在 'DROP TABLE IF 附近使用正确的语法
存在`tmp_cui_desc`;
创建表`tmp_cui_desc`(
    CUI CHAR(8' 在第 15 行

奇怪的是,该脚本在连接到同一服务器的 MySql 工作台(v5.2.31)中工作得非常好。为什么会这样?数据库是 latin1,字符集系统是 uft8。这可能是问题的一部分吗?如果是这样,我需要做什么来修复它?

非常感谢罗布的任何帮助。

使用 umls;

/*
 * 创建 umls_mrconso 表的摘要视图,该表将大部分细节从原子抽象为概念
 * 这是一个表,每个 CUI 有一行
 *
 */

/*
 * 根据给定 cui 的来源创建一个临时表
 */
如果存在则删除表 tmp_cui_sabs;
创建表 tmp_cui_sabs (
    CUI CHAR(8) 非空,
    SABS VARCHAR(255),
    主键 (CUI)
)
选择
    u.CUI 作为 CUI,
    GROUP_CONCAT(DISTINCT u.SAB ORDER BY u.SAB ASC SEPARATOR '|') 作为 SABS
FROM umls_mrconso 你
由 u.CUI 分组;

/*
 * 创建一个临时表,其中包含任何给定 cui 的最佳可用描述
 */
如果存在则删除表 tmp_cui_desc;
创建表 tmp_cui_desc (
    CUI CHAR(8) 非空,
    术语 VARCHAR(255),
    主键 (CUI)
)
选择
    u.CUI 作为 CUI,
    MIN(u.STR) 作为 TERM
FROM umls_mrconso 你
其中 u.ISPREF='Y'
和 u.LAT='ENG'
和 u.TS='P'
由 u.CUI 分组;

/*
 * 创建一个永久表作为 2 个临时表的连接
 * 包含首选描述,以及映射到此 cui 的所有来源,
 * 以及 CUI 本身。
 * TODO:在此处也包含语义类型信息是否有用?
 */
如果存在则删除表 bmj_cui_summary;
创建表 bmj_cui_summary (
    CUI CHAR(8) 非空,
    术语 VARCHAR(255),
    SABS VARCHAR(255),
    主键 (CUI)
)
选择
    sabs.CUI 作为 CUI,
    LOWER(descs.TERM) 作为 TERM,
    sabs.SABS 作为 SABS
从
    tmp_cui_sabs sabs,
    tmp_cui_desc 描述
WHERE sabs.CUI=descs.CUI;

/*
 * 清理 tmp 表
 */
如果存在则删除表 tmp_cui_sabs;
如果存在则删除表 tmp_cui_desc;

4

1 回答 1

0

只是一个猜测,但您可能每个查询只能发送一个命令。所以用 ; 将它们分开 并单独查询。我用不同的语言遇到了这个问题。

于 2011-06-08T20:18:35.987 回答