更新时间:2022-09-29 GMT+08:00
创建OBS外表,因为OBS文件中的某字段存在回车换行符导致表字段数据错误
问题现象
创建OBS外表,因为指定的OBS文件内容中某字段包含回车换行符导致表字段数据错误。
例如,当前创建的OBS外表语句为:
CREATE TABLE test06 (name string, id int, no string) USING csv OPTIONS (path "obs://dli-test-001/test.csv");
test.csv文件内容如下:
Jordon,88,"aa bb"
因为最后一个字段的aa和bb之间存在回车换行。创建OBS外表后,查询test06表数据内容显示如下:
name id classno Jordon 88 aa bb" null null
解决方案
创建OBS外表时,通过multiLine=true来指定列数据包含回车换行符。针对举例的建表语句,可以通过如下示例解决:
CREATE TABLE test06 (name string, id int, no string) USING csv OPTIONS (path "obs://dli-test-001/test.csv",multiLine=true);
父主题: 运维指导
运维指导 所有常见问题
- SQL作业运行慢如何定位
- 查看DLI SQL日志
- 查看DLI的执行SQL记录
- 执行SQL作业时产生数据倾斜怎么办?
- DLI控制台中无法查询到对应表
- OBS表压缩率较高
- 如何避免字符码不一致导致的乱码
- 删除表后再重新创建同名的表,需要对操作该表的用户和项目重新赋权
- DLI分区内表导入的文件不包含分区列的数据,导致数据导入完成后查询表数据失败
- 创建OBS外表,因为OBS文件中的某字段存在回车换行符导致表字段数据错误
- SQL作业中存在join操作,因为自动广播导致内存不足,作业一直运行中
- join表时没有添加on条件,造成笛卡尔积查询,导致队列资源爆满,作业运行失败
- 手动在OBS表的分区目录下添加了数据,但是无法查询到该部分数据
- 为什么insert overwrite覆盖分区表数据的时候,覆盖了全量数据?
- 为什么SQL作业一直处于“提交中”?
- 跨源连接RDS表中create_date字段类型是datetime,为什么dli中查出来的是时间戳呢?
- SQL作业执行完成后,修改表名导致datasize修改失败怎么办?
- 从DLI导入数据到OBS,为什么数据量出现差异?
more