Eric Lin created SQOOP-3039: ------------------------------- Summary: Sqoop unable to export Time data "13:14:12.1234" into Time colum in RMDBS Key: SQOOP-3039 URL: https://issues.apache.org/jira/browse/SQOOP-3039 Project: Sqoop Issue Type: Bug Components: tools Affects Versions: 1.4.6 Reporter: Eric Lin Priority: Minor
To re-produce: Set up MySQL database with following schema: {code} CREATE TABLE `test` ( `a` time(2) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 {code} Store the following data in HDFS: {code} 16:56:53.0999 16:56:54.1 16:56:53.0000 16:56:54.1230 {code} run Sqoop export command to copy data from HDFS into MySQL: {code} qoop export --connect jdbc:mysql://<mysql-host>/test --username root --password password --table test -m 1 --driver com.mysql.jdbc.Driver --export-dir /tmp/test {code} Command will fail with the following error: {code} java.lang.RuntimeException: Can't parse input data: '16:56:53.0999' at t5.__loadFromFields(t5.java:223) at t5.parse(t5.java:166) at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:89) at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:39) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145) at org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:784) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) Caused by: java.lang.NumberFormatException: For input string: "53.0999" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at java.sql.Time.valueOf(Time.java:108) at t5.__loadFromFields(t5.java:215) ... 12 more {code} Looks like Sqoop uses java.sql.Time.valueOf function to convert "16:56:53.0999" to Time object, however, this function only accepts Time in "hh:mm:ss" format: https://docs.oracle.com/javase/7/docs/api/java/sql/Time.html#valueOf(java.lang.String) -- This message was sent by Atlassian JIRA (v6.3.4#6332)