我正在使用Oracle 12.2。我希望导入数据泵文件。为此,我希望创建一个包含文件然后导入的目录。我使用以下命令创建目录
CREATE DIRECTORY dpump_dir1 AS ‘D:\dumpdir’;
我收到错误
SQL错误:ORA-00911:无效字符 00911. 00000 - “无效字符” *原因:标识符可能不以除以外的任何ASCII字符开头 字母和数字。第一个之后也允许$#_ 字符。双引号括起来的标识符可能包含 除了双引号之外的任何字符。替代报价 (q'#...#')不能使用空格,制表符或回车符 分隔符。对于所有其他上下文,请参阅SQL语言 参考手册。 有谁能告诉我出了什么问题?
答案 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';
据推测,您从编辑器中复制并粘贴了文本,这有助于替换引号。