如何上传json/jsonl文件导入到lakehouse的表中
前提条件
当前仅支持以下标准格式的json/jsonl文件,若不符合规范则无法成功识别
JSONL格式
- 每行一个完整的JSON对象\
- 行之间用换行符(\n)分隔\
- 不允许行尾有逗号\
- 每行必须是有效的JSON\
- 支持标准格式化的JSON行
-----示例1---
{"id": 1, "name": "Alice", "age": 30, "city": "New York"}{"id": 2, "name": "Bob", "age": 28, "city": "Los Angeles"}{"id": 3, "name": "Charlie", "age": 35, "city": "Chicago"}{"id": 4, "name": "Diana", "age": 32, "city": "Houston"}
-----示例2---
{"id": 1, "name": "Alice", "age": 30, "city": "New York"}
{
"id": 2,
"name": "Bob",
"age": 28,
"city": "Los Angeles"
}
JSON格式
--JSON数组格式---
[{"id": 1, "name": "Alice", "age": 30, "city": "New York"},{"id": 2, "name": "Bob", "age": 28, "city": "Los Angeles"},{"id": 3, "name": "Charlie", "age": 35, "city": "Chicago"},{"id": 4, "name": "Diana", "age": 32, "city": "Houston"}]
--JSON格式化---
{
"id": 2,
"name": "Bob",
"age": 28,
"city": "Los Angeles"
}
方案一:使用云器lakehouse web端上传功能导入
操作步骤:
在如下地方均可以点击「上传数据」
- 实例首页->数据上传
- 开发->数据树左侧
- 数据资产地图->数据上传
- 数据资产地图->数据管理->数据树->数据上传
将符合标准格式规范的,且后缀是json/jsonl的文件拖拽/添加至上传区域,同时选择具体的 配置信息,详细操作可见
https://yunqi.tech/documents/upload\\\\_data 。
上传到新表
当文件添加后,系统会给予json/jsonl的规则解析文件中的信息,并生成相应的字段名称、类型、以及具体的数值。
当确定解析的信息准确无误后,可自定义勾选本次希望上传和导入的数据。
点击确定后,系统会自动创建相应的表,同时将json文件的数据导入到该表中。
上传到已有表
- 选择目标表后,点击下一步,会列出目标表的具体字段。
- 请确保目标文件中的数据有相应的字段信息,若存在字段和文件中字段不一致的场景,则
- 若文件中没有目标表的字段,则该字段的数值默认为null
- 若文件中有的字段没有在表中出现,则该字段默认不进行任何处理。
- 若文件中的字段与表中的字段名一致,但是类型不一致,则该数值会被判定为错误数据。
方案二:使用外部volume导入
只支持每行一个是一个完整的JSON对象的形式导入,若文件中存在换行,格式化的场景,则无法解析。
第一步:创建外部volume的链接
CREATE STORAGE CONNECTION IF NOT EXISTS oss_test3 TYPE oss ENDPOINT = '对应的endpoint' ACCESS_ID = '您的access_id' ACCESS_KEY = '您的access_key' COMMENTS = 'OSS public endpoint' ;
第二步:创建外部volume
CREATE EXTERNAL VOLUME if not exists my_volumeLOCATION 'oss://json_file/'USING CONNECTION oss_test3DIRECTORY = (enable=true, auto_refresh=true)RECURSIVE=true;
第三步:校验volume是否创建成功(可选)
第四步:使用 sqlline 工具或 数据库管理工具。该命令暂不支持在 Studio 中运行。
PUT '/Users/xxx/xxxx.json' to volume public.my_volume file 'ods.json';
第五步:查询上传的json文件格式(可选)
SELECT * FROM VOLUME my_volume USING json FILES('odst.json') LIMIT 5;
第六步:基于文件解析后的字段创建相应的lakehouse table(table创建过程略)并将数据导入到table中
COPY INTO day_report_simpleFROM VOLUME my_volumeUSING JSONFILES('ods.json');
QA
问题一:使用数据上传功能上传的数据解析的字段不全
使用数据上传功能默认只解析json中前1000行的字段信息,若1000行外的数据中有不同的key和value默认不会进行处理。
问题二:为什么创建了CONNECTION和VOLUME但是依旧提示上传文件失败?
当前在云器studio产品内,无法通过运行结果直接判断CONNECTION和VOLUME是否成功创建,建议参考方案二中的第三步判断是否创建成功。