Oracle 如何将BLOB作为SQL插入从表中导出数据
我需要从一个模式导出数据并将其导入另一个模式。但是在第二个模式中有不同名称、不同属性名称等的表,但这些表适用于第一个模式中的数据。因此,我将数据导出为SQL插入,并在此插入中手动重写名称等 我的问题是表的列类型为BLOB。PL/SQL开发人员抛出错误: 但是,当我使用PL/sqldeveloper格式(Oracle 如何将BLOB作为SQL插入从表中导出数据,oracle,plsql,export,blob,plsqldeveloper,Oracle,Plsql,Export,Blob,Plsqldeveloper,我需要从一个模式导出数据并将其导入另一个模式。但是在第二个模式中有不同名称、不同属性名称等的表,但这些表适用于第一个模式中的数据。因此,我将数据导出为SQL插入,并在此插入中手动重写名称等 我的问题是表的列类型为BLOB。PL/SQL开发人员抛出错误: 但是,当我使用PL/sqldeveloper格式(.pde)时,它是某种原始字节数据,我无法更改我需要的内容 是否有任何解决方案来管理此问题 注意:我使用的是PL/sqldeveloper10.0.5.1710和oracledatabase12c
.pde
)时,它是某种原始字节数据,我无法更改我需要的内容
是否有任何解决方案来管理此问题
注意:我使用的是
PL/sqldeveloper10.0.5.1710
和oracledatabase12c
您不能有超过32k的文本值(因为您在此之前使用的是12c;4k),因此如果您的blob大于32k,您就不能有一个简单的insert
(即使使用较小的值处理原始数据,也很混乱)。如果架构在同一个数据库中,为什么不设置权限以允许在它们之间插入一个简单的insert…select
?@AlexPoole我知道设置权限是什么意思。这是令人悲伤的,但它是一些疯狂的想法,有人在我之上。我只需要做这项工作:(你提到当我有小于32k的BLOB时,我可以做insert
。如何处理?有没有处理原始数据的指南(我知道这很疯狂,但无论如何我很好奇,而且我还必须用某种方式:D)取决于LOB中的内容。如果是字符串,您可以尝试dbms\u LOB.substr
,并将其转换为文本和文本;但限制为32K。最后,我只是迁移了数据,而无需导出,只需使用INSERT-INTO-table\u-Name\u-to-T(T.column1,T.column2,…)直接从一个表导入到另一个表即可从S;
的表_Name_中选择S.column1,S.column2,…。这不是我的问题的答案,因为它不是导出,但它对我来说是解决方案,因为数据被迁移了。你不能有任何超过32k的文字值(因为在此之前你在12c;4k),所以如果你有大于32k的blob,你就不能有一个简单的插入
(即使使用较小的值处理这样的原始数据也会很混乱)。如果架构在同一个数据库中,为什么不设置权限以允许在它们之间插入一个简单的…选择?@AlexPoole我知道你设置权限的意思。这很遗憾,但这是我之上的某个人的疯狂想法。我只需要做以下工作:(您提到,当我有小于32k的BLOB时,我可以执行insert
。如何执行?是否有任何指导来处理原始数据(我知道这很疯狂,但无论如何我很好奇,而且我必须以某种方式执行:D)取决于LOB中的内容。如果是字符串,您可以尝试dbms\u LOB.substr
,并将其转换为文本和文本;但限制为32K。最后,我只是迁移了数据,而无需导出,只需使用INSERT-INTO-table\u-Name\u-to-T(T.column1,T.column2,…)直接从一个表导入到另一个表即可从表_Name_FROM S;
中选择S.column1,S.column2,…。它不是我问题的答案,因为它不是导出,但它是我的解决方案,因为数据已迁移。
Table MySchema.ENT_NOTIFICATIONS contains one or more BLOB columns.
Cannot export in SQL format, use PL/SQL Developer format instead.