gpt4 book ai didi

oracle - 如何在下面的查询中使用 "like"命令

转载 作者:行者123 更新时间:2023-12-02 07:26:20 25 4
gpt4 key购买 nike

我正在通过 SQL*Loader 将文本文件导入到 Oracle 表中,但我不想给出文件的具体名称,我只想导入 .txt 文件扩展名文件。看下面的代码:

create or replace
PROCEDURE EXT_TABLE

AS
A1 NUMBER ;
L_QUERY VARCHAR2(1000) := NULL;
L_DROP VARCHAR2(10000) := NULL;
BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE IMPORT_TEST
( EMP_ID NUMBER (10)
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY IMPORT
ACCESS PARAMETERS
( RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY '',''
MISSING FIELD VALUES ARE NULL
)
LOCATION ('file with .txt extension')
)reject limit unlimited';

L_QUERY:= 'INSERT INTO MPRN SELECT * FROM IMPORT_TEST';
EXECUTE IMMEDIATE L_QUERY;
L_DROP := 'drop table IMPORT_TEST ';
execute immediate L_DROP;
--execute immediate 'DROP IMPORT_TEST';
commit;
END EXT_TABLE;

在位置 LOCATION('带有 .txt 扩展名的文件') 处,我不想给出文件的名称,因为目录中只有一个 txt 文件。我不想使用 IN 参数。我只想从目录中搜索。用户运行该程序,它会自动导入txt文件,无需手动选择。

最佳答案

在大多数情况下,您无法以纯 PL/SQL 方式完成此操作。这里列出了一个解决方法:Listing files in a specified directory using PL/SQL但考虑到 SYS 的要求,这可能并不完全是您正在寻找的。之后,Java 存储过程将是您最好的选择。

如果您能够确定文件名,则可以通过立即执行调用动态重新定义外部表的位置。您可以将其放入这样的过程中,并在查询外部表之前使用它:

procedure alterExtTableFileName(a_tableName varchar2, a_filename varchar2) is
pragma autonomous_transaction;
begin

dbms_output.put_line('alterExtTableFileName(TableName=' || a_tableName || ' FileName=' || a_filename || ')');

execute immediate 'alter table ' || a_tableName || ' LOCATION (''' || a_filename || ''')';
commit;

exception when others then
rollback;
raise;

end alterExtTableFileName;

关于oracle - 如何在下面的查询中使用 "like"命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26176468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com