Writing data from file to database
----------------------------------

                 Key: DDLUTILS-266
                 URL: https://issues.apache.org/jira/browse/DDLUTILS-266
             Project: DdlUtils
          Issue Type: Bug
          Components: Ant Tasks
            Reporter: Moritz Kammerer
            Assignee: Thomas Dudziak


When you try to write data from a xml file into the database using the ant-task 
<ddlToDatabase> you'll get a "java.net.MalformedURLException: unknown protocol: 
" exception.
For example this task: 
                <ddlToDatabase usedelimitedsqlidentifiers="true" 
schemafile="db-schema.xml">
                        <database 
url="jdbc:derby:directory:C:/Temp/derbydb;create=true;" 
driverClassName="org.apache.derby.jdbc.EmbeddedDriver" />
                        <createDatabase failonerror="false" />
                        <writeSchemaToDatabase />
                        <writeDataToDatabase failonerror="false" 
datafile="data.xml" />
                </ddlToDatabase>

Here i get a "java.net.MalformedURLException: unknown protocol: d" exception.

Problem is the code


            try
            {
                getDataIO().writeDataToDatabase(reader, 
dataFile.getAbsolutePath());
                _log.info("Written data from file " + 
dataFile.getAbsolutePath() + " to database");
            }

in WriteDataToDatabaseCommand.java. writeDataToDatabase uses the second 
argument to call the method parse on a Digester object. This object interpretes 
the argument as an URI, trying to use the D from "D:/..." as a protocol 
identifier.

I fixed this with a quick-and-dirty hack:

            try
            {
                getDataIO().writeDataToDatabase(reader, "file:///" + 
dataFile.getAbsolutePath()); // THIS LINE HAS CHANGED
                _log.info("Written data from file " + 
dataFile.getAbsolutePath() + " to database");
            }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to