Maven SQL插件并调用Mysql Client生成XML文件

时间:2014-04-11 15:15:10

标签: mysql maven

我想创建一个由我的SQL命令提取的数据的XML文件,我想使用maven目标来实现。有没有办法做到这一点。 更具体地说,如果我必须使用mysql命令行客户端生成数据的XML文件,我这样做:

mysql --xml -e "SELECT * FROM test.person" > person-dump.xml

我想实现相同的功能,但作为maven插件/目标。 我能这样做吗?

2 个答案:

答案 0 :(得分:0)

我不相信有任何插件会为你做这件事,特别是。有一个Maven SQL插件可以执行SQL命令(http://mojo.codehaus.org/sql-maven-plugin/),但它似乎没有任何选项可以将数据转储到XML文件。

编写自己的maven插件(https://maven.apache.org/guides/plugin/guide-java-plugin-development.html)并将dbname,username,password和输出文件名作为参数并让它为您执行此操作应该是一项相对简单的任务。

答案 1 :(得分:0)

sql-maven-plugin的源代码允许您为文件生成结果;之后你可以按照你想要的方式解析它。

        <id>checksql</id>
        <activation>
            <property>
                <name>checksql</name>
            </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>sql-maven-plugin</artifactId>
                    <version>1.5</version>

                    <dependencies>
                        <dependency>
                            <artifactId>ojdbc6</artifactId>
                            <groupId>ojdbc6</groupId>
                            <scope>system</scope>
                            <version>1.0</version>
                            <systemPath>ojdbc6-11.2.0.jar</systemPath>
                        </dependency>

                    </dependencies>

                    <configuration>
                        <driver>oracle.jdbc.driver.OracleDriver</driver>
                        <url>jdbc:oracle:thin:@yourDb</url>
                        <username>use</username>
                        <password>pwd</password>
                        <settingsKey>sensibleKey</settingsKey>
                    </configuration>
                    <executions>
                        <execution>
                            <id>check</id>
                            <phase>process-test-resources</phase>
                            <goals>
                                <goal>execute</goal>
                            </goals>
                            <configuration>
                                <autocommit>true</autocommit>
                                <sqlCommand>select count(*) from  your_table</sqlCommand>
                                **<outputFile>out.log</outputFile>
                                <printResultSet>true</printResultSet>**
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>

这将生成包含以下内容的out.log:

COUNT(*) 3959

影响了0行