[
https://issues.apache.org/jira/browse/SQOOP-407?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13167099#comment-13167099
]
Jarek Jarcec Cecho commented on SQOOP-407:
------------------------------------------
Hi Eric,
thank you very much for reporting this issue. I've look into your report and it
seems to me that this is sqoop intentional behavior. Both tables share column
with same name "action_id" and you're selecting every column from each table.
So output result set for your query have two columns where both share same
name, which is precisely what sqoop is not supporting at the moment.
It's obvious that both columns will contain same values because you're joining
on them. However sqoop is not database engine, so this fact is unknown to
sqoop. I would advise to use projection to change column names - select
a.actor_id as aactor_id, b.actor_id as bactor_id ... .
Jarcec
> sqoop free-form query "Duplicate Column identifier" error on JOIN when a
> table has only one column and both tables have the same name for column
> --------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: SQOOP-407
> URL: https://issues.apache.org/jira/browse/SQOOP-407
> Project: Sqoop
> Issue Type: Bug
> Components: connectors/mysql
> Affects Versions: 1.4.1-incubating
> Environment: Ubuntu 10.04 ; mysql Server version:
> 5.1.41-3ubuntu12.10 (Ubuntu)
> Reporter: Eric Hernandez
> Priority: Minor
>
> If you try to join two tables that only have one column and both columns have
> the same name you get an error.
> Example
> | actor | CREATE TABLE `actor` (
> `actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
> PRIMARY KEY (`actor_id`)
> ) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8 |
> CREATE TABLE `actor_test` (
> `actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
> PRIMARY KEY (`actor_id`)
> ) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8
> ./sqoop import --connect jdbc:mysql://localhost/sakila -m1 --username sqoop
> --password sqoop --query 'SELECT a.*,b.* FROM actor a JOIN actor_test b ON
> a.actor_id=b.actor_id WHERE $CONDITIONS' --target-dir /user/eric/bugreport/
> Warning: /usr/lib/hbase does not exist! HBase imports will fail.
> Please set $HBASE_HOME to the root of your HBase installation.
> 11/12/09 13:54:50 WARN tool.BaseSqoopTool: Setting your password on the
> command-line is insecure. Consider using -P instead.
> 11/12/09 13:54:50 INFO manager.MySQLManager: Preparing to use a MySQL
> streaming resultset.
> 11/12/09 13:54:50 INFO tool.CodeGenTool: Beginning code generation
> 11/12/09 13:54:50 INFO manager.SqlManager: Executing SQL statement: SELECT
> a.*,b.* FROM actor a JOIN actor_test b ON a.actor_id=b.actor_id WHERE (1 =
> 0)
> 11/12/09 13:54:50 INFO manager.SqlManager: Executing SQL statement: SELECT
> a.*,b.* FROM actor a JOIN actor_test b ON a.actor_id=b.actor_id WHERE (1 =
> 0)
> 11/12/09 13:54:50 ERROR tool.ImportTool: Imported Failed: Duplicate Column
> identifier specified: 'actor_id'
> This schema is a modified version of the sakila database from
> http://dev.mysql.com/doc/index-other.html
> To recreate, load sakila database.
> USE sakila;
> CREATE TABLE actor_test LIKE actor;
> INSERT INTO actor_test SELECT * FROM actor;
> ALTER TABLE actor DROP first_name; ALTER TABLE actor DROP last_name; ALTER
> TABLE actor DROP last_update;
> ALTER TABLE actor_test DROP first_name; ALTER TABLE actor_test DROP
> last_name; ALTER TABLE actor_test DROP last_update;
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira