sql - 在 Oracle 的插入语句中遇到字符串常量大小限制

标签 sql oracle oracle11g

我正在尝试将一行从我们的生产数据库复制到我自己的小型个人 Oracle Express 数据库以重现错误,因为我无法真正进入生产代码。不幸的是,这一行涉及将某种数据结构序列化为 blob 列类型的列,这是在 mock 规范化之神。这是插入:

INSERT INTO TPM_VIEWS VALUES(
5,
'Test Repro View',
665,
1,
'0001000000ffffffff01000000000000000c020000003a44414c2c205... //About 7600 characters
);

我尝试在 Aqua Data Studio 10 中运行它,我得到:

ORA-01704: string literal too long

接下来我尝试将其粘贴到 SQL*Plus 中,这给了我:

SP2-0027: Input is too long (> 2499 characters) - line ignored

最后,我尝试将整个内容粘贴到 foo.sql 中并运行 @foo.sql 这给了我:

SQL> @c:\foo.sql
Input truncated to 7499 characters
SP2-0027: Input is too long (> 2499 characters) - line ignored
ERROR:
ORA-01756: quoted string not properly terminated

Oracle 专家的 super secret 方法是什么?不,我无权访问 Oracle 服务器本身,因此无法运行任何命令行备份或导出实用程序。谢谢!

更新:

我还尝试通过撒一些 ' || 来分割字符串。 ' 是随机的,这给了我错误:

 ORA-01489: result of string concatenation is too long

最佳答案

由于您可以访问生产数据库,因此最简单的解决方案可能是创建从本地 XE 数据库到生产数据库的数据库链接。

CREATE DATABASE LINK link_to_prod
  CONNECT TO <<your user name in prod>> 
  IDENTIFIED BY <<your password in prod>>
  USING <<TNS alias for prod database>>

然后,您可以将数据从 prod 复制到本地数据库

INSERT INTO tpm_views
  SELECT <<list of columns including BLOB>>
    FROM tpm_views@link_to_prod
   WHERE <<some key>> = 5

关于sql - 在 Oracle 的插入语句中遇到字符串常量大小限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8856788/

相关文章:

sql - PL/SQL 触发器问题

oracle - 没有时间存储日期是否使用更少的字节?

oracle - 针对 Oracle Forms 11g 应用程序使用 Glassfish 代替 WebLogic

mysql - SQL语句,获取查询RSQLite

sql - 无法打开备份设备 - SQL Server 本地备份数据库到 Azure 存储

sql - 找到一个字段的值与另一字段中数据的最大值匹配

sql - 通过在 T-SQL 中将值作为局部变量传递来设置兼容性级别

java - 在搜索中处理单引号

java - 使用 Oracle、Hibernate 和 Spring...没有返回数据

sql - 在 Oracle 中返回正则表达式的所有匹配项