用PHP脚本从Postgres迁移到Sybase



我想用php脚本从Postgres迁移10个表。

到目前为止

到目前为止,迁移式标题能够连接到数据库并打印出内容。除此之外,我还在计算检查目标表是否匹配源表是否匹配源表(我最近插入)(我最近了解了parameter @@ 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,目标表整数为数字(8,0)。现在,提到的方法试图将字符串插入" Integerfield"列中,该列期望在数字(8,0)中格式化一个整数。

PHP中是否有更好的方法来接收Postgres的数据,以便将其存储为"按",而无需先格式化到字符串,并且需要将字符串转换回Integer?


注意:我还试图通过板上看到的普通SQL获得希望的结果:插入...值(select ...从...)

但是,在我的数据库中执行此操作时,由于它位于其他数据库上,因此缺少访问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;

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

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

此类似的帖子将为您提供有关使用语法的一些帮助。例如,如果将Postgres导出到CSV格式中,则可以将数据BCP纳入Sybase ASE

最新更新