从 sql 开发人员导出表行并在 EDB(postgres)中导入



我已经使用 SQL 开发人员导出了给定架构中所有表中的所有行。生成一个包含插入语句的 sql 文件。我可以使用它在目标数据库 EDB(postgres(中导入数据吗?目标 Db 具有与源数据库 中相同的表。会起作用吗?

我也有海狸.如果我从 Dbeaver 中的 oracle 数据库导出数据并创建插入脚本.这会比使用从 sql 开发人员生成的 sql 脚本更好吗?请建议一些工作选项。谢谢。

这取决于导出的完成程度。

dbms 的备份通常会写出一系列 SQL 语句。这些是(除其他外(插入语句,用于将数据放入表中。

您可能缺少的最导入部分是 TABLE CREATE 命令。如果没有,则没有要插入的表(或具有不匹配列集的表(。

我建议您查看由pg_dump创建的 postgres 数据库的备份。这应该澄清一些事情。

好吧,第一件事是SQL开发人员将使用ANSI SQL将行导出为插入语句,因此通常它应该可以工作。但是,必须考虑数据类型转换,因为导出为插入内容的目的是在另一个 Oracle 数据库中使用。

在这里,您可以看到Oracle和PostgreSQL之间数据类型的可能转换。

Oracle type                  Possible PostgreSQL types
CHAR                         char, varchar, text
NCHAR                        char, varchar, text
VARCHAR                      char, varchar, text
VARCHAR2                     char, varchar, text, json
NVARCHAR2                    char, varchar, text
CLOB                         char, varchar, text, json
LONG                         char, varchar, text
RAW                          uuid, bytea
BLOB                         bytea
BFILE                        bytea (read-only)
LONG RAW                     bytea
NUMBER                       numeric, float4, float8, char, varchar, text
NUMBER(n,m) with m<=0        numeric, float4, float8, int2, int4, int8,boolean, char, varchar, text
FLOAT                        numeric, float4, float8, char, varchar, text
BINARY_FLOAT                 numeric, float4, float8, char, varchar, text
BINARY_DOUBLE                numeric, float4, float8, char, varchar, text
DATE                         date, timestamp, timestamptz, char, varchar, text
TIMESTAMP                    date, timestamp, timestamptz, char, varchar, text
TIMESTAMP WITH TIME ZONE     date, timestamp, timestamptz, char, varchar, text
TIMESTAMP WITH               date, timestamp, timestamptz, char, varchar, text
LOCAL TIME ZONE 
INTERVAL YEAR TO MONTH       interval, char, varchar, text
INTERVAL DAY TO SECOND       interval, char, varchar, text

因此,答案始终取决于数据模型的复杂程度。

最新更新