【问题标题】:LOAD DATA INFILE equivalent in OracleOracle 中的 LOAD DATA INFILE 等效项
【发布时间】:2012-02-15 17:01:09
【问题描述】:

我只是想知道 Oracle 中是否有与 MySQL LOAD DATA INFILE statemnent 等效的语句?我需要它,因为我想从一个巨大的文本文件中读取到数据库表中。

【问题讨论】:

    标签: oracle text-files


    【解决方案1】:

    Windows 10 和 Oracle 12c 上的示例

    如果您有一个文本文件,其中每个表的记录由逗号分隔,您可以这样做:

    为每个表创建一个控制文件,名为 table_name.ctl (C:\Users\user\Desktop\directory\table_name.ctl)

    load data 
    infile 'C:\Users\user\Desktop\directory\table_name.txt' 
    append
    into table table_name
    fields terminated by ","
    (id, field2,field3)
    

    之后,在 windows 中,您应该打开 Cmd 并在每个表中加载数据,然后远程加载数据,例如在 aws 服务器中。

    sqlldr userid=USER@AWS_PDB1/password
    control='C:\Users\user\Desktop\directory\table_name.ctl' log='C:\Users\user\Desktop\directory\table_name.log' direct=true
    

    sqlldr control='C:\Users\user\Desktop\directory\table_name.ctl' log='C:\Users\user\Desktop\directory\table_name.log' direct=true
    and then ask them the user and password
    

    如果您遇到以下错误:“程序无法启动,因为您的计算机中缺少 oranfsodm12.dll。尝试重新安装程序来解决这个问题。”

    这是因为 SQL * Loader 已禁用,无法在控制台窗口中使用,已解决 启用以下步骤(如http://www.dallasmarks.com/installing-two-oracle-12c-clients-on-one-server/):

    1. 应该去文件夹 C:\oracle\client\user\product\12.1.0\client_1\BIN

    2. 复制 oraodm12.dll 文件,调用新文件 oranfsodm12.dll,并将其粘贴到同一个 BIN 文件夹中。

    3. 再次从 cmd 运行命令。

    【讨论】:

      【解决方案2】:

      Oracle 提供了SQLLoader 命令行实用程序。但它依赖于数据文件的正确格式。

      您可以尝试查看Oracle External Tables(例如,您可以将 csv 文件链接为外部表并将其视为 Oracle 中的表)。

      这两种解决方案各有利弊,但最大的缺点是它们仍然依赖于数据输入格式(所以如果你有一个为 mysql 准备的文件,你可能需要稍微调整一下)。

      【讨论】:

        猜你喜欢
        • 2016-10-25
        • 1970-01-01
        • 1970-01-01
        • 2012-10-05
        • 2010-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多