以向成績表中匯入外部表資料為例,資料為.csv檔案資料,使用sqlplus匯入。 首先確保db_grade表(內部表)已建立
- 建立external_grade目錄物件
create or replace directory external_grade as 『f:\ext_file』;
f:\ext_file這是我們要訪問的資料檔案db_grade所在的目錄
若報錯,出現許可權不足,則返回到內部表所在使用者下,授權。
select distinct privilege from dba_sys_privs where privilege like 『%directory%』;即可檢視許可權授予。
drop any directory 是刪除目錄的,create any directory 是建立目錄的
現在就來授予staffuser使用者建立目錄的許可權(可以順便把刪除目錄的也給了):
grant drop any directory to staffuser;
grant create any directory to staffuser;
- 建立外部表ext_grade
create table ext_grade (
register_no varchar2(20),
course_no varchar2(10),
work_id varchar2(10),
final_grade varchar2(5),
college_no varchar2(10)
–registered_date varchar2(20),
–registered_year number(4),
–registered_term number(1),
–makeup_flag char(2)
) organization external (
type oracle_loader
default directory external_grade
access parameters (
fields terminated by 『,』
missing field values are null)
location(『db_grade.csv』)
) reject limit unlimited;
**注意:需參考結合外部表的列名與內部表的屬性進行建立,外部表不可以有外來鍵約束。
在將源資料檔案中的資料型別轉換為表定義的列資料型別的時候,有時候會出現錯誤,例如指定的分隔符不符合要求,因此在建立外部表時,可以指定一些子句來對外部表進行處理,如reject limit,badfile(或 nobadfile),logfile(或nologfile)等
select work_id from ext_grade where work_id not in(select work_id from db_teacher);
select college_no from ext_grade where college_no not in(select college_no from db_college);
**注意:如果資料型別轉換失敗,原始檔資料還是無法被讀取到外部表的相應列中,因此要注意設定資料型別和資料長度,如日期的型別一般為date型別,但是oracle對插入date型別的資料格式有嚴格要求具體參照,無法直接插進去的,因此在建立外部表是我修改了date資料型別
- 將外部表資料匯入到內部表中
insert into db_grade
(register_no,course_no,work_id,final_grade,college_no)
select register_no,trim(course_no),work_id,final_grade,college_no from ext_grade ;
SparkSQL中建立外部表及使用
工作中經常會需要與外圍系統打交道,由於外圍系統和本系統不處於同乙個hadoop集群下,且不具有訪問本系統的許可權,所以基本上大資料量的介面都是以檔案的方式進行傳輸。如何快速 便捷的將檔案入spark庫中?通過sparksql中建立外部表的方式就能夠很好地解決這一需求。注意到,如果要建立多級目錄時,需...
如何 在 SharePoint 中建立外部列表
在建立外部內容型別後建立外部列表是一項非常簡單的任務,有如下4種方式進行 1 可使用 microsoft sharepoint designer 2010 啟動 microsoft sharepoint designer,然後開啟包含外部內容型別的 sdk 示例 sharepoint 單擊左導航欄上...
Oracle資料庫有關外部表建立
oracle資料庫有關外部表建立 1 建立3個目錄,分別用於存放資料原始檔 日誌檔案與壞記錄檔案 create or replace directory datadir as d oracle data create or replace directory logdir as d oracle l...