sqoop 数据从达梦导入hdfs中 达梦的数据中存在中文回车 导致hdfs的一行数据变成了多行 怎么处理
时间: 2024-03-26 14:42:15 浏览: 122
导入数据时,可以使用 Sqoop 的 `--input-lines-terminated-by` 参数指定输入数据的行尾符。如果达梦的数据中存在中文回车导致一行数据被分成多行,可以尝试使用如下命令:
```
sqoop import --connect jdbc:dm://<ip>:<port>/<database> --username <username> --password <password> --table <table> --input-lines-terminated-by "\r\n" --null-string '\\N' --null-non-string '\\N' --fields-terminated-by '\001' --escaped-by '\\' --query "select * from <table> where \$CONDITIONS"
```
其中,`<ip>`、`<port>`、`<database>`、`<username>`、`<password>`、`<table>` 分别是要连接的达梦数据库的 IP 地址、端口号、数据库名称、用户名、密码和表名。`"\r\n"` 是输入数据的行尾符,`--null-string '\\N'` 和 `--null-non-string '\\N'` 分别指定字符串类型和非字符串类型的空值标记为 `\\N`。`--fields-terminated-by '\001'` 指定字段之间的分隔符为 ASCII 码为 1 的字符。`--escaped-by '\\'` 指定转义字符为反斜杠。`--query "select * from <table> where \$CONDITIONS"` 指定要导入的数据的 SQL 查询语句。注意,在 SQL 查询语句中必须包含 `$CONDITIONS`,这是 Sqoop 内部使用的一个变量。
这样设置了行尾符和字段分隔符后,Sqoop 就能够正确处理中文回车导致的问题。
阅读全文