Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将oracle迁移到postgresql编码的字节序列无效;UTF8";:0x00_Oracle_Postgresql_Utf 8_Plpgsql_Oracle Fdw - Fatal编程技术网

将oracle迁移到postgresql编码的字节序列无效;UTF8";:0x00

将oracle迁移到postgresql编码的字节序列无效;UTF8";:0x00,oracle,postgresql,utf-8,plpgsql,oracle-fdw,Oracle,Postgresql,Utf 8,Plpgsql,Oracle Fdw,我正在将应用程序从oracle迁移到postgresql。在我已经迁移的其中一个函数中,我将数据从不同的oracle db(oracle中的db link,postgresql中的oracle_fdw扩展)从几个表复制到postgresql db中的本地表中。但是,我得到了下一个错误: 编码“UTF8”的字节序列无效:0x00 我在这个论坛上看到一些人有这样的问题,但他们没有尝试直接从远程数据库复制数据(他们从转储或csv加载数据…) 不知该怎么办?PostgreSQL不允许字符串中的“零”字符

我正在将应用程序从oracle迁移到postgresql。在我已经迁移的其中一个函数中,我将数据从不同的oracle db(oracle中的db link,postgresql中的oracle_fdw扩展)从几个表复制到postgresql db中的本地表中。但是,我得到了下一个错误:

编码“UTF8”的字节序列无效:0x00

我在这个论坛上看到一些人有这样的问题,但他们没有尝试直接从远程数据库复制数据(他们从转储或csv加载数据…)


不知该怎么办?

PostgreSQL不允许字符串中的“零”字符


您必须先清理Oracle数据,然后才能从PostgreSQL检索它们。

PostgreSQL不允许字符串中包含“零”字符


您必须先清理Oracle数据,然后才能从PostgreSQL中检索它们。

现在它可以与Oracle_fdw 2.3一起使用+ 这是我使用的代码

select 'ALTER FOREIGN TABLE "'||table_schema||'"."'||table_name||'" ALTER COLUMN "'||column_name||'"  OPTIONS (ADD strip_zeros ''true'');' 
from information_schema."columns" c 
where table_name ='my_foreign_table_name'
and table_schema ='my_schema_name_where_foreign_table_created'
and udt_name in ('varchar', 'bpchar');

现在它可以与oracle_fdw 2.3一起使用+ 这是我使用的代码

select 'ALTER FOREIGN TABLE "'||table_schema||'"."'||table_name||'" ALTER COLUMN "'||column_name||'"  OPTIONS (ADD strip_zeros ''true'');' 
from information_schema."columns" c 
where table_name ='my_foreign_table_name'
and table_schema ='my_schema_name_where_foreign_table_created'
and udt_name in ('varchar', 'bpchar');

什么是Oracle DB编码?nls_字符集:IW8ISO8859P8什么是Oracle DB编码?nls_字符集:IW8ISO8859P8“零”字符是什么意思?如何在数据进入postgresql之前对其进行过滤?我在postgresql中运行查询insert into local_table select*from remote_table带有“零字符”我是指带有ASCII(或UNICODE)代码点0的字符。在“从
远程\u表中选择”期间引发错误-其中的某些字符串列包含此类字符。您必须修复Oracle端的数据,我认为这些只是没有任何值的varchar列—varchar的null。那么我到底需要更改什么呢?不,空值不会是问题。如果您在Oracle中选择这样的有问题的值:
从atable中选择dump(badcol,16),其中id=42
您将在其中某处看到一个字节0x00。这就是问题所在(将
badcol
atable
id
和42替换为与您的情况相关的值)。我在postgresql中得到的错误没有指定哪一行有问题-只有表名和列。我怎样才能从这里开始?对于exmaple:插入MANUIM,从MANUIM\u产品中选择*;错误:编码“UTF8”的字节序列无效:0x00上下文:转换列“street”用于“manuim_prod”的外部表扫描,第922311行“零”字符是什么意思?如何在数据进入postgresql之前对其进行过滤?我在postgresql中运行查询insert into local_table select*from remote_table带有“零字符”我是指带有ASCII(或UNICODE)代码点0的字符。在“从
远程\u表中选择”期间引发错误-其中的某些字符串列包含此类字符。您必须修复Oracle端的数据,我认为这些只是没有任何值的varchar列—varchar的null。那么我到底需要更改什么呢?不,空值不会是问题。如果您在Oracle中选择这样的有问题的值:
从atable中选择dump(badcol,16),其中id=42
您将在其中某处看到一个字节0x00。这就是问题所在(将
badcol
atable
id
和42替换为与您的情况相关的值)。我在postgresql中得到的错误没有指定哪一行有问题-只有表名和列。我怎样才能从这里开始?对于exmaple:插入MANUIM,从MANUIM\u产品中选择*;错误:编码“UTF8”的字节序列无效:0x00上下文:为“manuim_prod”的外部表扫描转换列“street”,第922311行