sqoop-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ajana Chandiruthil Sathian <ajan...@gmail.com>
Subject Re: How to specify the column names when export HDFS data into MySQL tables?
Date Tue, 26 Dec 2017 17:49:31 GMT
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....
>
>

Mime
View raw message