5GB数据加载至Autonomous Database的操作方案及限制咨询
Autonomous Database对象存储文件加载问题解答
5GB单文件是否可以直接创建外部表加载
完全可以,你不需要将5GB的文件拆分为多个小文件,直接针对单个文件创建外部表即可完成数据加载操作。
单文件最大容量限制说明
Autonomous Database官方没有对可加载的对象存储单文件设置硬性容量上限,只要你的对象存储可以正常存储该文件,就可以通过外部表方式加载。
不过实际使用中需要注意以下影响:
- 加载单个超大文件时无法利用ADB的并行加载能力,加载速度会比加载同等大小的多分片文件慢,尤其是你配置了较高OCPU数的ADB实例时,差距会更明显
- 如果是未压缩的纯文本格式(如CSV)的超大文件,加载过程的IO耗时会比列式压缩格式(Parquet、ORC)高很多
推荐操作实践
如果你只是临时加载一次5GB的文件,直接用单文件创建外部表即可,没有必要做拆分操作
如果是定期加载的业务数据,建议将大文件拆分为128MB~1GB大小的分片,搭配列式存储格式使用,可以最大化利用ADB的并行加载能力,大幅提升加载效率
基础语法参考
创建外部表的示例代码如下,根据你实际的文件格式、存储路径、字段结构调整参数即可:
BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TABLE( table_name => '<YOUR_EXTERNAL_TABLE_NAME>', credential_name => '<YOUR_OBJ_STORAGE_CREDENTIAL_NAME>', file_uri_list => '<YOUR_5GB_FILE_OBJECT_STORAGE_URI>', format => JSON_OBJECT('type' VALUE 'csv', 'skipheaders' VALUE 1, 'delimiter' VALUE ','), column_list => '<COLUMN_NAME> <COLUMN_TYPE>, ...' ); END; /
创建完成后可以直接查询外部表数据,也可以执行以下语句将数据导入到ADB内部表中:
CREATE TABLE <YOUR_INTERNAL_TABLE_NAME> AS SELECT * FROM <YOUR_EXTERNAL_TABLE_NAME>;
内容的提问来源于stack exchange,提问作者Nilay Panchal
相关产品推荐
相关产品推荐

