【问题标题】:Migration from Postgres to Sybase with a PHP Script使用 PHP 脚本从 Postgres 迁移到 Sybase
【发布时间】:2017-07-30 12:06:35
【问题描述】:

我想使用 PHP 脚本将大约 10 个表从 Postgres 迁移到 Sybase。

到目前为止,我完成了删除脚本,它只是清空了目标数据库上所有需要的表。

到目前为止,迁移脚本能够连接到两个数据库并打印出内容。除此之外,在后面的 INSERT 之后,我正在计算用于检查目标表是否与源表匹配的行数(我最近了解到参数 @@ERROR 可以正确检查 SQL 是否成功,并将对其进行调整)。


我现在的问题是我收到一条错误消息:

警告:sybase_query():Sybase:服务器消息: '1' 附近的语法不正确。 (严重性 15,程序 N/A)在 .../.../...

尝试将 Postgres 数据库中的选定行插入 Sybase 数据库时。 因此我使用了 fetch_assoc 方法来读取每一行的数据。这个方法的问题,它会返回一个字符串而不是一个整数,如下所示:http://php.net/manual/de/function.pg-fetch-assoc.php

我的代码中的具体点如下所示:

                while ($row = pg_fetch_assoc($result)) {
                $insert_dst = $destDB->query("SET IDENTITY_INSERT " . $dst_sy_tbl . " ON INSERT INTO " . $dst_sy_tbl . " (Integerfield, SOME_TEXT1, SOME_TEXT2) VALUES(". $row['integerfield'] . " '" . $row['some_text1'] . "', '" . $row['sometext2'] . "')"  );
                }

源表整数格式为 int4,目标表整数格式为 numeric(8,0)。上述方法现在尝试将字符串插入到“integerfield”列中,该列需要格式化为 numeric(8,0) 的整数。

PHP 中是否有更好的方法来接收来自 Postgres 的数据,以便它们“按原样”存储,而无需先格式化为字符串,然后再将字符串转换回整数?强>


注意:我还尝试使用简单的 SQL 来获得想要的结果,如下所示:Insert into ... values ( SELECT ... FROM ... )

但在我的数据库工具上执行此操作时,它缺乏访问 SRC_Table 的权限,因为它位于不同的数据库中。 - 也许在 php-script 中这会起作用,因为两个连接都已经建立并且我能够打印两个表的内容。

SET IDENTITY_INSERT DST_Table ON INSERT INTO db_name.of.DST_Table(Integer, SOME_TEXT1, SOME_TEXT2) SELECT integer, some_text1, some_text2 FROM db_name.of.SRC_Table;

【问题讨论】:

  • 我完全误解了 ERROR 消息,并认为如果结果集中的每一行都作为字符串给出是不好的。最后,我放置了一个 SQL-insert 命令,它无论如何都是由字符串组成的。我的错误是,我将整数作为 '1' 而不是 1 。另一个错误是错误的比较方法,我将 GO 方向 Sybase 盲复制到 Postgres Script,对于 RETURN 方向 Postgres 到 Sybase 我不得不将“string”调整为“varchar”,将“datetime”调整为“timestamp”

标签: php sql postgresql database-migration sap-ase


【解决方案1】:

如果你可以使用导入/导出工具...

您应该考虑使用BCP 工具将数据导入 Sybase。

similar SO Post 将为您提供一些有关使用语法的帮助。例如,如果您export from Postgres into CSV format,您将能够将该数据 BCP 到 Sybase ASE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 2011-11-16
    • 2021-02-17
    • 2021-10-25
    相关资源
    最近更新 更多