无法使用具有不同分隔符的sqoop从mysql导入数据

yhxst69z  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(292)

作为hadoop领域的初学者,我尝试使用sqoop工具(版本:sqoop1.4.6-cdh5.8.0)。
虽然我提到了各种网站和论坛,但我无法得到可行的解决方案,在那里我可以导入数据使用任何其他分隔符以外的 , .
pfb我使用的代码:
---连接mysql,创建表和记录 , 在字符串中。

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

请告诉我哪里弄错了。

hfyxw5xn

hfyxw5xn1#

这个 --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;

相关问题