如何在 Oracle 数据泵中转义特殊字符

问题描述

环境

Linux 上的 Oracle 19c

cat export_schema.par

DIRECTORY=USER_CLONE
DUMPFILE=export_user.dmp
schemas=USER@YAHOO.CA

导出失败,出现“USER”未找到错误

不知何故,@ 及其之后的任何内容都被忽略了。

我尝试了“”转义字符,如下所示。

DIRECTORY=USER_CLONE
DUMPFILE=export_user.dmp
schemas=USER\@YAHOO.CA

导出失败,出现“USER@YAHOO.CA”未找到错误

关于如何在 par 文件或命令行中转义“@”的任何建议。

提前致谢。

解决方法

这个架构名称从何而来? Oracle 模式/用户名通常不能包含“@”字符。来自文档:

未加引号的标识符只能包含数据库字符集中的字母数字字符和下划线 (_)。

https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Database-Object-Names-and-Qualifiers.html#GUID-75337742-67FD-4EC0-985F-741C93D918DA

不建议在用户名和其他标识符上使用双引号强制使用其他特殊字符,因为它与大多数客户端应用程序不兼容,并且会强制任何对架构的引用使用双引号括起来。在像数据泵这样的应用程序中,无论如何都可以用双引号偏移模式名称,可能不可能有这样的字符。

,

您确定您的用户名是“USER@YAHOO.CA”吗?如果您例如,它也可以是您的外部名称使用 Kerberos 身份验证。 尝试像这样获取您的用户名: SELECT USERNAME FROM USER_USERS

问候, 丹尼尔

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...