Oracle:导入CSV文件
我已经搜索了一段时间,但似乎找不到答案,所以这里是 我有一个CSV文件,我想导入到Oracle(9i/10i)中的表中 稍后,我计划将此表用作另一个用途的查找 这实际上是我正在研究的一个解决方法,因为使用IN子句查询超过1000个值是不可能的 如何使用SQLPLUS实现这一点Oracle:导入CSV文件,oracle,csv,import,sqlplus,sql-loader,Oracle,Csv,Import,Sqlplus,Sql Loader,我已经搜索了一段时间,但似乎找不到答案,所以这里是 我有一个CSV文件,我想导入到Oracle(9i/10i)中的表中 稍后,我计划将此表用作另一个用途的查找 这实际上是我正在研究的一个解决方法,因为使用IN子句查询超过1000个值是不可能的 如何使用SQLPLUS实现这一点 谢谢你抽出时间!:) SQL Loader帮助将csv文件加载到表中: 如果您只想要sqlplus,那么它会变得有点复杂。您需要找到sqlloader脚本和csv文件,然后运行sqlldr命令。另一种解决方案是使用外部表:
谢谢你抽出时间!:) SQL Loader帮助将csv文件加载到表中:
如果您只想要sqlplus,那么它会变得有点复杂。您需要找到sqlloader脚本和csv文件,然后运行sqlldr命令。另一种解决方案是使用外部表:
当您必须经常且快速地执行此导入时,请使用此选项 您可以使用的另一个解决方案是SQL Developer 使用它,您可以从csv文件导入(其他分隔文件可用) 只需打开表视图,然后:
- 选择行动
- 导入数据
- 找到你的文件
- 选择你的选择
只是在2个已经非常好的答案中添加了另一个选项。有人让我发布一个链接到!我在2012年开放世界大会上介绍的。这是一篇完整的博客文章,演示了如何使用外部表构建解决方案。SQL Loader是一种方法。 我最近从一个csv文件加载了我的表,这是一个新概念,我想和大家分享一个例子
LOAD DATA
infile '/ipoapplication/utl_file/LBR_HE_Mar16.csv'
REPLACE
INTO TABLE LOAN_BALANCE_MASTER_INT
fields terminated by ',' optionally enclosed by '"'
(
ACCOUNT_NO,
CUSTOMER_NAME,
LIMIT,
REGION
)
将控制文件和csv放在服务器上的同一位置。
找到sqlldr exe并对其进行开票
sqlldr用户ID/passwd@DBname控制=
示例:sqlldr abc/xyz@oracontrol=load.ctl
希望有帮助。从Oracle 18c您可以使用: 内联外部表支持将外部表的运行时定义作为SQL语句的一部分,而无需在数据字典中将外部表创建为持久对象。 对于内联外部表,可以在运行时在SELECT语句中使用与使用CREATETABLE语句创建外部表相同的语法。在查询块的FROM子句中指定内联外部表。包含内联外部表的查询还可以包含用于连接、聚合等的常规表
我想分享两个技巧:(技巧1)创建csv文件(技巧2)将csv文件中的行加载到表中 ==[(提示1)SQLPLUS从Oracle表创建csv文件]==== 我将SQLPLUS与以下命令一起使用:
set markup csv on
set lines 1000
set pagesize 100000 linesize 1000
set feedback off
set trimspool on
spool /MyFolderAndFilename.csv
Select * from MYschema.MYTABLE where MyWhereConditions ;
spool off
exit
=[提示2将csv文件加载到表中的SQLLDR]====
我使用SQLLDR和csv(逗号分隔)文件将csv文件中的行添加(追加)到表中。
文件中有,字段之间有,文本前后有
临界:如果最后一列为null,则在行尾有一个
csv文件中的数据行示例:
11,"aa",1001
22,"bb',2002
33,"cc",
44,"dd",4004
55,"ee',
这是控制文件:
加载数据
追加
进入表MYSCHEMA.MYTABLE
字段以“,”结尾,也可以用“,”括起
尾随零线
(
库曼那美1,
库曼那美2,
香豆蔻胺
)
这是在Linux中执行sqlldr的命令。如果在Windows中运行,请使用\而不是/c:
sqlldr userid=MyOracleUser/MyOraclePassword@MyOracleServerIPaddress:port/MyOracleSIDorService DATA=datafile.csv CONTROL=controlfile.ctl LOG=logfile.log BAD=notloadedrows.bad
祝你好运 你说得对。更多的研究让我意识到SQL加载器是解决这个问题的方法。谢谢您应该使用联接而不是IN子句。“您应该使用联接而不是IN子句。”。。。马修·沃森(Matthew Watson)在这里写了一篇非常详细的文章,介绍了如何使用SQL开发者向导来准备SQL加载器脚本和控制文件:非常好!这正是我想要的。非常感谢
sqlldr userid=MyOracleUser/MyOraclePassword@MyOracleServerIPaddress:port/MyOracleSIDorService DATA=datafile.csv CONTROL=controlfile.ctl LOG=logfile.log BAD=notloadedrows.bad