You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将AWS S3存储的CSV文件加载导入至Oracle数据库表

Oracle从AWS S3加载CSV文件到数据表的实现方案

你之前查询到的LOAD DATA属于MySQL的语法,并不适用于Oracle数据库。Oracle官方原生支持直接从AWS S3加载CSV数据到库表,常见可落地的实现方式如下:

  • 方案1:使用Oracle内置DBMS_CLOUD包(适用Oracle 18c及以上版本、Oracle自治数据库)
    这是Oracle官方首推的方案,无需中转文件,可直接拉取S3文件导入,操作步骤如下:
    1. 首先创建S3访问凭证
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'AWS_S3_CRED',
        username => 'AWS_ACCESS_KEY_ID',
        password => 'AWS_SECRET_ACCESS_KEY'
      );
    END;
    /
    
    1. 调用COPY_DATA过程直接导入CSV数据
    BEGIN
      DBMS_CLOUD.COPY_DATA(
        table_name => 'TARGET_TABLE_NAME',
        credential_name => 'AWS_S3_CRED',
        file_uri_list => 'https://<bucket-name>.s3.<region>.amazonaws.com/<csv-file-path>',
        format => JSON_OBJECT('type' VALUE 'csv', 'skipheaders' VALUE 1, 'delimiter' VALUE ',', 'encoding' VALUE 'UTF8')
      );
    END;
    /
    
    可通过调整format参数自定义字段分隔符、行分隔符、引号规则、跳过行数等属性,能力覆盖你之前了解的LOAD DATA的所有配置项。本地部署的Oracle如果没有预装DBMS_CLOUD,可自行按照官方标准流程手动安装启用。
  • 方案2:SQL*Loader + AWS CLI中转(适用所有Oracle版本)
    如果你的Oracle版本较低无法使用DBMS_CLOUD,可以通过中转文件的方式实现:
    1. 通过aws s3 cp命令将S3上的CSV文件下载到Oracle数据库所在服务器本地
    2. 编写SQL*Loader控制文件,定义CSV字段映射、分隔规则、表头跳过规则等配置
    3. 执行sqlldr命令完成数据导入,配置规则和你熟悉的LOAD DATA语法高度兼容
  • 方案3:S3外部表(适用Oracle 19c及以上版本)
    可以将S3上的CSV文件直接挂载为Oracle的外部表,无需提前导入即可直接查询,也可以通过INSERT INTO 目标表 SELECT * FROM 外部表的方式批量导入数据,配置时同样需要先通过DBMS_CLOUD创建S3访问凭证。

提示:如果Oracle部署在AWS EC2实例上,可以给EC2绑定具备S3访问权限的IAM角色,无需在代码中明文配置AWS密钥,安全性更高。

内容的提问来源于stack exchange,提问作者Sarath Subramanian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:36:02