无法在oracle 12c中创建目录

时间:2017-09-20 13:19:18

标签: database oracle12c

我正在使用Oracle 12.2。我希望导入数据泵文件。为此,我希望创建一个包含文件然后导入的目录。我使用以下命令创建目录

CREATE DIRECTORY dpump_dir1 AS  ‘D:\dumpdir’;

我收到错误

  

SQL错误:ORA-00911:无效字符   00911. 00000 - “无效字符”   *原因:标识符可能不以除以外的任何ASCII字符开头              字母和数字。第一个之后也允许$#_              字符。双引号括起来的标识符可能包含              除了双引号之外的任何字符。替代报价              (q'#...#')不能使用空格,制表符或回车符              分隔符。对于所有其他上下文,请参阅SQL语言              参考手册。   有谁能告诉我出了什么问题?

1 个答案:

答案 0 :(得分:1)

您提供的代码中使用的引号不是简单的单引号;格式化为代码时更容易看到:

CREATE DIRECTORY dpump_dir1 AS  ‘D:\dumpdir’;

您还可以使用文本编辑器或转储字符串来查看它包含的内容:

select dump(q'[CREATE DIRECTORY dpump_dir1 AS  ‘D:\dumpdir’;]', 1016) from dual;

DUMP(Q'[CREATEDIRECTORYDPUMP_DIR1AS‘D:\DUMPDIR’;]',1016)                                                                                                                               
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Typ=96 Len=49 CharacterSet=AL32UTF8: 43,52,45,41,54,45,20,44,49,52,45,43,54,4f,52,59,20,64,70,75,6d,70,5f,64,69,72,31,20,41,53,20,20,e2,80,98,44,3a,5c,64,75,6d,70,64,69,72,e2,80,99,3b

尽管长度为45个字符,但您可以看到它以49个字节报告,表示您有多字节字符。在显示为3b的最终semicolon之前,您有序列e2,80,99代表the right single quotation mark,并且稍早您有序列e2,80,98代表the left single quotation mark

如果使用简单引号,它应该有效:

CREATE DIRECTORY dpump_dir1 AS  'D:\dumpdir';

据推测,您从编辑器中复制并粘贴了文本,这有助于替换引号。