2

我正在尝试使用bcp从 Sybase ASE 数据库中提取记录并将它们写入文件。我需要排除数据库中的两个字段,所以我尝试使用格式.fmt文件。

这是我的 bcp:

bcp Rdevdb..TBL_XFER out out1.txt -S$serv -U$user -P$pass -fbcp.fmt -c -t\| 

我需要 | char 作为分隔符。

  1. 当我使用-c开关时,它似乎完全忽略了格式文件,这是真的吗?

  2. 当我既不使用 the-n-c开关(告诉它什么格式,本机或字符)时,它似乎使用本机格式创建文件,因为当我在我的文本编辑器中打开它时,它会强制它进入十六进制编辑器......这是案子?

  3. 当我包含-c, 并在格式文件中删除两个我不想要的字段时,它会将所有 db 字段带入文件中,这就是为什么我认为它会忽略 .fmt 文件。

  4. 如果我删除-c开关,并使用 .fmt 文件中未包含的两个字段运行它,我会收到以下错误:Incorrect host-column number found in bcp format-file.

  5. 为了让我的bcp命令给我带来我想要的结果,我在 .fmt 文件中包含什么开关组合和什么?

这是.fmt文件的一部分。任何表字段名称中都没有空格(这不包括字段 1 或字段 2,因为这些是我不希望在文件中出现的那些)。

10.0
147
3   SYBCHAR 2   6   "|" 3   COVERAGE_CODE
4   SYBCHAR 2   6   "|" 4   DEPT
5   SYBCHAR 2   8   "|" 5   ORG
6   SYBCHAR 2   8   "|" 6   DIV
7   SYBCHAR 2   8   "|" 7   DISTRIBUTE
...

表中有 147 个字段,但当我在 .fmt 文件中包含所有字段时,总共有 149 个字段,前两行指定版本和字段编号。

谢谢你的帮助。

4

1 回答 1

2

或者,您可以创建仅包含您感兴趣的列(甚至行)的表视图,然后对视图使用 bcp。您似乎正在将数据传输到新存储库,因此您可能希望坚持使用 -c,因为字符 bcp 比本机文件更易于共享。

我没有使用 -f 标志,所以我真的不能说让它以这种方式工作。

于 2012-07-05T20:04:14.223 回答