【发布时间】:2018-07-30 23:15:51
【问题描述】:
首先,提前感谢您的回答。
这个问题是关于外部表和过程的。
我将一些 .csv 文件存储在一个目录中,我必须将所有这些数据添加到一个表中。
我的想法是:
将 csv 文件数据加载到外部表中
将外部表中的所有数据插入到最终表中
我已经创建了将数据从 csv 文件 加载到 外部表
的代码 CREATE TABLE "INFO"."DEVICE_EXTERNAL"
(
"Serial Number" VARCHAR2(100),
"Status" VARCHAR2(100),
"Install Date" VARCHAR2(100)
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY "ER_IN_FILES"
ACCESS PARAMETERS
( RECORDS DELIMITED BY newline
SKIP 1
FIELDS TERMINATED BY '|'
optionally enclosed BY '"'
MISSING FIELD VALUES ARE NULL
(
"Serial Number" char,
"Status" char,
"Install Date" char
)
)
LOCATION
( "INFO":'device_data_week3.csv' ---csv file
)
);
并制定了一个将数据从外部表加载到最终表的过程,我是否还包括数据移动的实际日期时间。
Procedure Move_External_Final AS
v_upload_date DATE := SYSDATE;
v_company varchar(1) := '1';
BEGIN
BEGIN
INSERT INTO SMART_MAP
(DATA_DATE,
COMPANY,
"Serial Number",
"Status",
"Install Date"
)
SELECT
v_upload_date,
v_company,
"Serial Number",
"Status",
to_date("Install Date")
from DEVICE_EXTERNAL ;
COMMIT;
EXCEPTION
WHEN no_data_found
THEN
dbms_output.put_line ( 'EXC FAIL INSERT');
END ;
END Move_External_Final;
我们的目标是让一切自动化。因此我想创建一个允许外部表从csv 文件 收集数据的过程,然后将这些数据移动到最终表。
注意:csv 文件每周都会不同。因此,在收集新数据之前,必须删除外部表旧内容。
我的问题是:是否可以创建一个过程来删除以前的内容并将数据从 csv 文件收集到外部表?
也许有更简单的方法...
再次感谢您!
【问题讨论】:
标签: oracle csv datatables oracle-sqldeveloper external