Uploaded image for project: 'Sqoop (Retired)'
  1. Sqoop (Retired)
  2. SQOOP-1284

Maximal id query for incremental import does not quote table name

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 1.4.4
    • None
    • None
    • None

    Description

      Running an incremental import job where the table name is a reserved word fails. See example and stack trace below:

      sqoop job \
      --create order_test \
      – import \
      --connect jdbc:mysql://server/mydata \
      --username ***** \
      --password ***** \
      --table order \
      --target-dir /user/username/mydata/order_test \
      --incremental append \
      --check-column Id

      sqoop job --exec order_test

      14/02/07 08:15:45 INFO tool.ImportTool: Maximal id query for free form incremental import: SELECT MAX(`Id`) FROM order
      14/02/07 08:15:45 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: 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 'order' at line 1
      at org.apache.sqoop.tool.ImportTool.initIncrementalConstraints(ImportTool.java:282)
      at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:404)
      at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:502)
      at org.apache.sqoop.tool.JobTool.execJob(JobTool.java:228)
      at org.apache.sqoop.tool.JobTool.run(JobTool.java:283)
      at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
      at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
      at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
      at org.apache.sqoop.Sqoop.runTool(Sqoop.java:222)
      at org.apache.sqoop.Sqoop.runTool(Sqoop.java:231)
      at org.apache.sqoop.Sqoop.main(Sqoop.java:240)
      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 'order' at line 1
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
      at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
      at com.mysql.jdbc.Util.getInstance(Util.java:386)
      at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
      at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
      at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
      at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
      at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
      at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2619)
      at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2569)
      at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1524)
      at org.apache.sqoop.tool.ImportTool.getMaxColumnId(ImportTool.java:198)
      at org.apache.sqoop.tool.ImportTool.initIncrementalConstraints(ImportTool.java:269)
      ... 10 more

      14/02/07 08:15:45 DEBUG hsqldb.HsqldbJobStorage: Flushing current transaction
      14/02/07 08:15:45 DEBUG hsqldb.HsqldbJobStorage: Closing connection

      Attachments

        Activity

          People

            Unassigned Unassigned
            knutn Knut Nordin
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: