Bei einem Java-Projekt, wo wir auch Maven einsetzen, müssen wir auf eine MSSQL-Datenbank zugreifen. Da unsere Datenbankscripte momentan im Fluss sind, d.h. sich häufig ändern, wollten wir diese mit einem maven-goal über das Plugin maven-sql-plugin neu in die Datenbank laden lassen. Leider lief das gar nicht, da die Datenbank sich weigerte dem SQL-Plugin die Befehle abzunehmen. Heute kam ich drauf, dass der Delimiter falsch gesetzt war. Dieser lautet bei MSSQL einfach “GO” und nicht “;” wie bei beispielsweise MySQL.
Leider ist dies nicht dokumentiert und so musste ich bis an die API-Docs crawlen, bis ich die endgültige Lösung für das Laden des Scripts src/main/resources/database/database.sql
fand:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| <plugin>
<groupid>org.codehaus.mojo</groupid>
<artifactid>sql-maven-plugin</artifactid>
<version>1.3</version>
<dependencies>
<dependency>
<groupid>net.sourceforge.jtds</groupid>
<artifactid>jtds</artifactid>
<version>1.2.2</version>
</dependency>
</dependencies>
<configuration>
<driver>net.sourceforge.jtds.jdbc.Driver</driver>
<url>jdbc:jtds:sqlserver://localhost:1433;selectMethod=cursor;sendStringParametersAsUnicode=false</url>
<username>YOURSECRETUSER</username>
<password>YOURSECRETUSER</password>
</configuration>
<executions>
<execution>
<id>create-data</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<autocommit>true</autocommit>
<delimiter>GO</delimiter>
<srcfiles>
<srcfile>src/main/resources/database/database.sql</srcfile>
</srcfiles>
</configuration>
</execution>
</executions>
</plugin>
|