-1

我的程序内存中有数据,需要导入数据库。

出于性能原因,我想通过 Sybase BCP 来实现,特别是使用本机文件格式。

挑战:我需要知道原生 Sybase BCP 文件格式是什么,而且它似乎没有在任何地方记录。

有没有很好的文档?创建一个逻辑的例子?

(我知道我可以轻松地创建字符 BCP 文件,但这比原生格式慢)

4

2 回答 2

0

本机格式是一种二进制格式,它不能与文本相互转换,它是通过使用带有 -n 而不是 -c 的 BCP 创建的。除此之外,执行此操作的方法是相同的,并且分隔符和其他选项对于字符和本机的工作方式相同。它没有记录,因为它是他们拥有的专有格式。

如果您有一个现有的字符文件,您需要加载,尽管您必须使用字符格式来加载文件 - 您不能将您的字符文件转换为本机格式或再次转换回来。唯一的解决方法是将其作为 char 加载到 Sybase 数据库中,BCP 作为本机输出,然后 BCP 再次作为本机加载,这比开始时仅使用 char 格式要慢。

如果您在目标表上删除索引,加载 BCP 文件的速度也会大大加快,但之后您必须重新创建它们(并在必要时更新索引统计信息)。您还需要在数据库上设置“选择进入/批量复制”选项,以允许这种快速的 BCP 方法,因为它是一个最少记录的操作。

于 2020-07-21T05:55:55.147 回答
-1

如果程序内存中的数据太大 您可以对 Sybase IQ 使用/尝试 Load table 命令(仅限 Sybase IQ,不适用于 Sybase ASE)。也比 bcp 更快地加载表命令

于 2020-09-09T00:43:40.220 回答