Hi,

I am assuming that the reason you put single quotes around the last three
columns : int, double, string is not to consider its original meaning(
since they are data types). Please correct me if I misunderstood. If that
is the case, you should provide that for string too. In the sqoop command
you did not provide the single quotes around string column.  Can I ask you
one question? Why do you want to name the columns as datatypes? Does it
even possible? Interesting. The whole time I thought those are reserved
words and could not use as an identifier. Does not feel like a good
practice though!

On Tue, Dec 26, 2017 at 7:51 PM, feng wang <wangfengfight...@gmail.com>
wrote:

> Thanks for your reply. I have already used --columns argument like this:
>>
>> bin/sqoop export --connect jdbc:mysql://192.168.100.23:3303/IA
>> --username "root" --password "password" --table "ALL_TYPES" --columns
>> "bankcard,sex,HTTPStateCode,boolean,ip,array,map,idcard,
>> phone,email,post,date,uniform_date,`int`,`double`,string"  --export-dir
>> "/tmp/ALL_TYPES.csv"  -m 1
>
>
> I use escape char* "`" * with column name*s "int" and "double"* but it
> return following information:
>
>> 17/12/26 18:37:38 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
>> 17/12/26 18:37:38 WARN tool.BaseSqoopTool: Setting your password on the
>> command-line is insecure. Consider using -P instead.
>> 17/12/26 18:37:39 INFO manager.MySQLManager: Preparing to use a MySQL
>> streaming resultset.
>> 17/12/26 18:37:39 INFO tool.CodeGenTool: Beginning code generation
>> 17/12/26 18:37:39 INFO manager.SqlManager: Executing SQL statement:
>> SELECT t.* FROM `ALL_TYPES` AS t LIMIT 1
>> 17/12/26 18:37:39 ERROR sqoop.Sqoop: Got exception running Sqoop:
>> java.lang.IllegalArgumentException: We found column without column name.
>> Please verify that you've entered all column names in your query if using
>> free form query import (consider adding clause AS if you're using column
>> transformation)
>> java.lang.IllegalArgumentException: We found column without column name.
>> Please verify that you've entered all column names in your query if using
>> free form query import (consider adding clause AS if you're using column
>> transformation)
>>         at org.apache.sqoop.orm.ClassWriter.generate(
>> ClassWriter.java:1671)
>>         at org.apache.sqoop.tool.CodeGenTool.generateORM(
>> CodeGenTool.java:107)
>>         at org.apache.sqoop.tool.ExportTool.exportTable(
>> ExportTool.java:64)
>>         at org.apache.sqoop.tool.ExportTool.run(ExportTool.java:100)
>>         at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
>>         at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
>>         at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
>>         at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
>>         at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
>>         at org.apache.sqoop.Sqoop.main(Sqoop.java:236)
>
>
>
> I checked the columns in MySQL table "ALL_TYPES" to ensure all column
> names in my query.
> Is there anything wrong with me?
>
>
>
> 2017-12-27 1:49 GMT+08:00 Ajana Chandiruthil Sathian <ajan...@gmail.com>:
>
>> 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