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, 王峰 <wangfengfight...@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....
>
>

Reply via email to