我的src/main/resources/data.sql
文件中有下面的data.sql文件。我希望从user.csv文件创建用户标签。
DROP TABLE IF EXISTS `USER` CASCADE;
CREATE TABLE `user` AS SELECT * FROM CSVREAD('classpath:user.csv');
当spring应用程序启动时,它总是出错,并出现以下错误-
由:org.h2.jdbbc.JdbcSQLSyntaxErrorException引起:SQL语句中的语法错误"删除表如果存在[*]用户CASCADE";;预期的";标识符";;SQL语句:
我花了很长时间来找出错误,但没有。知道我该如何修复这个错误吗?
H2数据库的较新版本中有一个关键字USER
,因此需要正确转义。您应该使用双引号"
而不是单引号'
。
从H2文档复制/粘贴:
有一个不能用作标识符的关键字列表(表名称、列名等(,除非它们被引号括起来带有双引号(。以下令牌是H2中的关键字:
用户。。。
H2的新版本可能比旧版本有更多的关键字。
始终检查您是否能够通过诸如pgadmin或toad之类的DBMS工具对正在使用的数据库运行相同的查询。我假设您使用的是postgresql,所以如果您仍然使用,则保留user关键字。需要创建名为user的表,它必须用双引号括起来,也许你可以尝试用双引号代替Java中的单引号,你需要转义这个双引号才能包含到这个查询文本的字符串文本中
DROP TABLE IF EXISTS "USER" CASCADE;
CREATE TABLE "user" AS SELECT * FROM CSVREAD('classpath:user.csv')