我一直在尋找了一段時間,但似乎無法使這裏找到答案去...甲骨文:導入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