我一直在寻找了一段时间,但似乎无法使这里找到答案去...甲骨文:导入CSV文件
我已经得到了我想要导入到表中的CSV文件在Oracle(9i/10i)中。
后来我打算将此表用作其他用途的查找。
这实际上是一个我正在处理的解决方法,因为使用IN子句查询1000个以上的值是不可能的。
这是如何使用SQLPLUS完成的?
谢谢你的时间! :)
我一直在寻找了一段时间,但似乎无法使这里找到答案去...甲骨文:导入CSV文件
我已经得到了我想要导入到表中的CSV文件在Oracle(9i/10i)中。
后来我打算将此表用作其他用途的查找。
这实际上是一个我正在处理的解决方法,因为使用IN子句查询1000个以上的值是不可能的。
这是如何使用SQLPLUS完成的?
谢谢你的时间! :)
SQL装载机帮助负载CSV文件导入表:SQL*Loader
如果你想只的sqlplus,那么它变得有点复杂。您需要找到您的sqlloader脚本和csv文件,然后运行sqlldr命令。
你说得对。一些更多的研究让我意识到SQL Loader是解决这个问题的方法。谢谢! – cr8ivecodesmith 2011-06-01 10:04:20
另一种解决方案是使用外部表:当你要经常和非常快速的做进口http://www.orafaq.com/node/848
使用此。
感谢您的跟进。 :) – cr8ivecodesmith 2011-06-02 01:10:54
另一个链接:http://www.orafaq.com/wiki/External_table – Vadzim 2014-10-23 17:06:42
您可以使用的另一个解决方案是SQL Developer。
有了它,您就可以从csv文件导入(其他分隔文件可用)。
只要打开表视图,然后:
您可以选择让SQL Developer为您执行插入操作,创建SQL插入脚本或为SQL Loader脚本创建数据(本人未尝试使用此选项)。
当然,如果您只能使用命令行,所有这些都没有意义,但是如果您可以在本地使用SQL Developer进行测试,则可以始终部署生成的插入脚本(例如)。
只需向2个已经非常好的答案添加另一个选项即可。
有关如何使用SQL Developer向导准备SQL Loader脚本和控制文件的详细文章:http://www.thatjeffsmith.com/archive/2012/08 /使用Oracle的-SQL显影剂到设置-SQLLOADER游程/ – Vadzim 2014-12-20 19:38:49
有人让我发布一个链接到the framework!我在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用户名/ passwd文件@数据库名称控制= 例如:SQLLDR ABC/XYZ @ ORA控制= load.ctl
希望它能帮助。
从Oracle 18c
你可以使用Inline External Tables:
内嵌外部表允许外部表的定义运行时作为SQL语句的一部分,无需在数据字典中创建外部表作为持久化对象。
使用内联外部表时,可以在运行时在SELECT语句中使用与使用CREATE TABLE语句创建外部表相同的语法。在查询块的FROM子句中指定内联外部表。包含嵌入式外部表的查询还可以包含用于连接,聚合等的常规表。
INSERT INTO target_table(time_id, prod_id, quantity_sold, amount_sold)
SELECT time_id, prod_id, quantity_sold, amount_sold
FROM EXTERNAL (
(time_id DATE NOT NULL,
prod_id INTEGER NOT NULL,
quantity_sold NUMBER(10,2),
amount_sold NUMBER(10,2))
TYPE ORACLE_LOADER
DEFAULT DIRECTORY data_dir1
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY '|')
LOCATION ('sales_9.csv') REJECT LIMIT UNLIMITED) sales_external;
您应该使用联接而不是IN子句。 – MikeKulls 2013-07-18 03:48:01
“您应该使用联接而不是IN子句。” ...您通过首先将csv导入到Oracle中来执行此操作。 – 2017-04-19 19:22:15