无法使用带有不同分隔符的 Sqoop 从 MySql 导入数据

Unable to import data from MySql using Sqoop with different delimiter

作为 Hadoop 领域的初学者,我正在尝试使用 Sqoop 工具(版本:Sqoop 1.4.6-cdh5.8.0)。

虽然我参考了各种网站和论坛,但我无法获得可行的解决方案,在其中我可以使用 , 以外的任何其他分隔符导入数据。

PFB 我用过的代码 :

--- 连接到 MySql,创建 table 并在字符串中记录 ,

mysql> create database GRHadoop;
Query OK, 1 row affected (0.00 sec)

mysql> use GRHadoop;
Database changed
mysql> Create table sitecustomer(Customerid int(10), Customername varchar(100),Productid int(4),Salary int(20));
Query OK, 0 rows affected (0.22 sec)

mysql> Insert into sitecustomer values(1,'Sohail',100,50000),(2,'Reshma',200,80000),(3,'Tom',200,60000);
Query OK, 3 rows affected (0.06 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> Insert into sitecustomer values(4,'Su,kama',300,50000),(5,'Ram,bha',100,80000),(6,'Suz',200,60000);
Query OK, 3 rows affected (0.03 sec)
Records: 3  Duplicates: 0  Warnings: 0

Sqoop 命令:

sqoop import \
--connect jdbc:mysql://127.0.0.1:3306/GRHadoop \
--username root \
--password cloudera \
--table sitecustomer \
--input-fields-terminated-by '|' \
--lines-terminated-by "\n" \
--target-dir /user/cloudera/GR/Sqoop/sitecustomer_data \
--m 1;

预期输出:

1|Sohail|100|50000

2|Reshma|200|80000

3|Tom|200|60000

4|Su,kama|300|50000

5|Ram,bha|100|80000

6|Suz|200|60000

实际输出:

1,Sohail,100,50000

2,Reshma,200,80000

3,Tom,200,60000

4,Su,kama,300,50000

5,Ram,bha,100,80000

6,Suz,200,60000

请指导我哪里错了。

--input-fields-terminated-by参数是告诉Sqoop在export期间如何解析输入文件。您应该使用 --fields-terminated-by,此参数控制输出的格式。

sqoop import \ 
      --connect jdbc:mysql://127.0.0.1:3306/GRHadoop \ 
      --username root \ 
      --password cloudera \ 
      --table sitecustomer \ 
      --fields-terminated-by '|' \ 
      --lines-terminated-by "\n" \ 
      --target-dir /user/cloudera/GR/Sqoop/sitecustomer_data \ 
      --m 1;