Oracle中的LOAD DATA INFILE等效项

时间:2012-01-21 12:53:31

标签: oracle text-files

我只是想知道Oracle中是否存在与MySQL LOAD DATA INFILE相同的语句?我需要它,因为我想从一个巨大的文本文件读入数据库表。

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:0)

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 \客户\用户\产品\ 12.1.0 \的Client_1 \ BIN

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

  3. 再次从cmd运行命令。