2

我需要帮助。我想使用名称中包含 sysdate 的 PL/SQL 创建一个表?例如,table_name_sysdate?

我正在尝试创建一个外部表,该表将从 .csv 文件和我要读取的文件名中读取,其名称由常量(table_name)和日期(sysdate)组成。该文件名可以根据日期每天更改。我不知道如何创建从日常可更改文件名加载的机制。

这是我的代码,我不知道在带问号的括号内放什么。

create table ext_table_1
(med_name varchar2(20),
cost integer)
organization external
(type ORACLE_LOADER 
default directory orders
access parameters
(records delimited by newline
fields terminated by ',')
location (???)
reject limit 200;
4

3 回答 3

3

该文件在表的 LOCATION 属性中指定。alter table你可以用一个语句来改变它,像这样:

 alter table log_files location ('prefix_20121219.csv');

所以基本上,使用今天的文件创建表,然后每天在计划的作业或类似操作中运行 ALTER TABLE 语句。

或者,您可以保持文件名静态并将每天的文件重命名/复制为该名称。如果您在 11gR2 上运行,您可以关联一个预处理器文件 - 一个 shell 脚本 - 以便在您查询外部表时执行此操作。 了解更多

于 2012-12-19T22:33:34.870 回答
1

这是对目录对象的引用,使用“创建目录”创建。

http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_5007.htm

于 2012-12-19T17:07:58.257 回答
0

基本上你想要的是从外部 CSV 文件加载到一个表中,并且文件名包含一个时间戳,所以它的名称每次都会改变。外部脚本可以简单地将该文件(从文件名中提取时间戳并检查它是否以正确的格式匹配今天)复制到加载脚本所期望的标准名称。如果您以后需要原始文件,在覆盖之前,请先在备份目录中制作该文件的副本。

于 2016-12-07T02:11:47.027 回答