Hi,

I am not sure whether I understand your question. Why do you want to add the escape character to the column names? Did you try using the --columns argument in your Sqoop command. Can you please send the Sqoop command as well as the HDFS file format? Is HDFS file is in CSV form?

On Mon, Dec 25, 2017 at 3:35 AM, 王峰 <wangfengfighting@gmail.com> wrote:
Hello:
      
      I have a question on the export of sqoop(V1.4.6) need your help, the problem is as follows:
When I export HDFS file into MySQL table `test`  the `TABLE_SCHEMA` of `test` are as follows:
"bankcard"
"sex"
"HTTPStateCode"
"boolean"
"domain"
"ip"
"array"
"map"
"idcard"
"phone"
"email"
"post"
"date"
"uniform_date"
"int"
"double"
"string"
and got error like this:
ERROR [Thread-11] org.apache.sqoop.mapreduce.AsyncSqlOutputFormat: Got exception in update thread: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'int, double, string) VALUES ('bankcard', 'sex', 'HTTPStateCode', 'boolean', 'dom' at line 1
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
	at com.mysql.jdbc.Util.getInstance(Util.java:383)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1062)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4226)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4158)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2840)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082)
	at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1302)
	at org.apache.sqoop.mapreduce.AsyncSqlOutputFormat$AsyncSqlExecThread.run(AsyncSqlOutputFormat.java:233)



1. I know the reason why the job going to false,And I want to ask if there is any way to specify the table columns like translate int to `int` & double to `double` in my case?
2. I want to edit the source code adding the escape char to column names,however, I could not find where the getColumnNamesForRawQuery is. I try to edit org.apache.sqoop.manager.SqlManager.getColumnNamesForRawQuery as shows:

        code at 152:      columns.add(colName);   -->   columns.add("`"+colName+"`");

But it did not work for me...

Hope your helps  Thanks....