gpt4 book ai didi

mysql - MySQL 中具有 TEXT 数据类型的表未复制到 Oracle

转载 作者:行者123 更新时间:2023-11-29 20:51:27 24 4
gpt4 key购买 nike

我从未使用过 mysql,但在我最近的一项工作中,我必须使用连接到 MySQL 数据库的数据库链接在 Oracle 中创建一个表。

我要复制的表有一列数据类型为 TEXT

从 oracle 我尝试触发此命令

create table test_table
as
select * from <MYSQL_TABLE>@DBLINK;

我收到以下错误

Error report - SQL Error: ORA-00997: ugyldig bruk av datatypen LONG
00997. 00000 - "illegal use of LONG datatype"
*Cause:
*Action:

我在创建表时尝试使用 to_char() 函数

create table test_table
as
select to_char(col_with_TEXT_datatype) from <MYSQL_TABLE>@DBLINK;

它给出以下错误

ORA-00932: inkonsekvente datatyper: forventet CHAR, fikk LONG
00932. 00000 - "inconsistent datatypes: expected %s got %s"
*Cause:
*Action:

谁能告诉我如何在 Oracle 中创建这个表。

请注意,这不是一次性事件,此表创建将通过程序成为每周作业计划的一部分。所以这只能通过create table语句来实现。

提前致谢。

最佳答案

我会尝试在 MySQL 端创建一个 View ,该 View 仅包含 Oracle 期望并知道要处理的数据类型。然后将您的复制查询定向到该 View !

优点是数据类型转换可以在 MySQL 端完成。

例如如果您的表是这样创建的:

CREATE TABLE `xy` (
`id` int(11) DEFAULT NULL,
`t` varchar(100) DEFAULT NULL,
`d` long);

像这样创建 View :

create view xy_oracle_view as select id, t, cast(d as char(512)) from xy;

并在复制语句中引用 View

create table test_table
as
select * from xy_oracle_view@DBLINK;

小心!如果您在转换中使用的字符大小大于 512,您将获得一列文本类型而不是 varchar! (在我的 MySQL 5.7 上测试。)

关于mysql - MySQL 中具有 TEXT 数据类型的表未复制到 Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38011141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com