【发布时间】:2012-02-15 17:01:09
【问题描述】:
我只是想知道 Oracle 中是否有与 MySQL LOAD DATA INFILE statemnent 等效的语句?我需要它,因为我想从一个巨大的文本文件中读取到数据库表中。
【问题讨论】:
标签: oracle text-files
我只是想知道 Oracle 中是否有与 MySQL LOAD DATA INFILE statemnent 等效的语句?我需要它,因为我想从一个巨大的文本文件中读取到数据库表中。
【问题讨论】:
标签: oracle text-files
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/):
应该去文件夹 C:\oracle\client\user\product\12.1.0\client_1\BIN
复制 oraodm12.dll 文件,调用新文件 oranfsodm12.dll,并将其粘贴到同一个 BIN 文件夹中。
再次从 cmd 运行命令。
【讨论】:
Oracle 提供了SQLLoader 命令行实用程序。但它依赖于数据文件的正确格式。
您可以尝试查看Oracle External Tables(例如,您可以将 csv 文件链接为外部表并将其视为 Oracle 中的表)。
这两种解决方案各有利弊,但最大的缺点是它们仍然依赖于数据输入格式(所以如果你有一个为 mysql 准备的文件,你可能需要稍微调整一下)。
【讨论】: