def db = [
moduleGroup: 'mysql',
moduleName: 'mysql-connector-java',
moduleVersion: '5.1.18',
driver: "com.mysql.jdbc.Driver",
url: 'jdbc:mysql://localhost:3306/bham',
user: mySqlUser,
password: mySqlPassword
]
configurations {
sql
}
task connect << {
// This is needed to get mySql driver onto the Groovy/Gradle classpath
configurations.sql.each { file ->
println "Adding URL: $file"
gradle.class.classLoader.addURL(file.toURI().toURL())
}
def sql = groovy.sql.Sql.newInstance(db.url, db.user, db.password, db.driver)
sql.execute("actStatusCodeLkp.sql")
String sqlFilePath = "src/main/resources/sqlscripts/actStatusCodeLkp.sql"
String sqlString = new File(sqlFilePath).text
sql.execute(sqlString)
sql.close()
}
actStatusCodeLkp.sqlВыполнение Sql файл сценария в Groovy/Gradle
insert into act_status_code (id, code, display_name, code_system_name, code_system) values (1, 'active', 'active', 'ActStatus', '2.16.840.1.113883.5.14');
insert into act_status_code (id, code, display_name, code_system_name, code_system) values (2, 'cancelled', 'cancelled', 'ActStatus', '2.16.840.1.113883.5.14');
insert into act_status_code (id, code, display_name, code_system_name, code_system) values (3, 'aborted', 'aborted', 'ActStatus', '2.16.840.1.113883.5.14');
insert into act_status_code (id, code, display_name, code_system_name, code_system) values (4, 'completed', 'completed', 'ActStatus', '2.16.840.1.113883.5.14');
кажется, что sql.execute команда не разметить файл в 4 различных утверждений вставки и броски.
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL
server version for the right syntax to use near 'insert into act_status_code (id, code, display_name, code_system_name, code_syst' at line 2
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
Это работает, если я просто держать одну вставку заявление в файле. Какая чистая работа здесь, на самом деле не нашла ничего относительно этого онлайн. Кроме того, при использовании maven я могу запустить тот же файл sql, используя sql-maven-plugin.
Вы не можете выполнять операторы многострочные с классом Sql , У вас может быть больше успеха с чем-то вроде этого? http://blog.codeborne.com/2012/09/using-dbdeploy-in-gradle.html –
Вы также можете вызвать readLines в файле, который получит список, а затем каждый() в этом списке и вызовет sql. executeInsert с линией. Это может помочь. – mikemil
После выполнения некоторых исследований, которые я определил для MySql, мне нужно указать 'allowMultiQueries: 'true''. Он работает как прелесть, но если у меня есть какие-либо комментарии в моем файле, такие как '--insert into ..', он терпит неудачу по той же причине, я думаю, должен быть способ избежать прокомментированных строк? –