【问题标题】:Transfer MS SQL Server data to Oracle tables将 MS SQL Server 数据传输到 Oracle 表
【发布时间】:2013-08-05 09:49:50
【问题描述】:

我正在使用数据库链接将表数据从 SQL Server 传输到 Oracle。虽然我的连接和一些传输运行顺利,但其中一些给我以下错误:

SQL Error: ORA-00997: illegal use of LONG datatype

我的查询是这样的:

insert into FCPEERANALYSISPROPS select * from FCPEERANALYSISPROPS@mssql;

当我试图查看失败的列时(分别对表的每一列运行查询),我发现问题是针对在 SQL Server 中定义为 nvarchar(4000) 的一列提出的,而在 oracle 中是定义为:VARCHAR2(4000 CHAR)

您能就这个问题提出建议吗?

【问题讨论】:

标签: sql sql-server oracle types long-integer


【解决方案1】:

this你可以看到VARCHAR2bytes,而nvarchar是unicode(2字节或更多)因此你需要

  • 在 Oracle 中使用 NVARCHAR2 而不是 VARCHAR2 重复表结构
  • 然后运行insert into ... select ... from

【讨论】:

  • varchar2nvarchar2 都可以容纳多字节字符; varchar2 定义为 either by number of bytes or number of charactersthe concepts guide 中还有更多内容。
  • 我得到了同样的错误。这就是我所做的:alter table <table_name> modify (<column_name> nvarchar2(2000));
  • 从上面的链接我看到 nvarchar2varchar2 的最大大小是 4000 字节,您从一个 nvarchar(4000) 开始,它是 8000 字节。因此,您似乎需要将列拆分为 2000 的 2 列,并将 left(YourColumn,2000) 分配给第一个,将 substring(YourColunmn, 2001, 2000) 分配给第二个。下一个问题是,您需要为CRUDSELECTDELETE 复制功能,view 就足够了,对于UPDATEINSERT,您需要工作更难
猜你喜欢
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
相关资源
最近更新 更多