执行 SQL bcp 命令时出现 「Syntax Error in 'queryout'.」 错误的原因及解决

在安装了 SQL Server 的机器上使用 bcp 批处理导出数据为 txt 文件,之前执行的时候都能导出成功,但最近出现一个错误,不能导出了。

出现如下错误

Copy direction must be either 'in' or 'out'.
Syntax Error in 'queryout'.
usage: bcp [[db_name.]owner.]table_name[:slice_num] [partition pname] {in | out} [filename]
 [-m maxerrors] [-f formatfile] [-e errfile]
 [-F firstrow] [-L lastrow] [-b batchsize]
 [-n] [-c] [-t field_terminator] [-r row_terminator]
 [-U username] [-P password] [-I interfaces_file] [-S server]
 [-a display_charset] [-z language] [-v]
 [-A packet size] [-J client character set] 
 [-T text or image size] [-E] [-g id_start_value] [-N] [-X]
 [-M LabelName LabelValue] [-labeled]
 [-K keytab_file] [-R remote_server_principal] [-C]
 [-V [security_options]] [-Z security_mechanism] [-Q] [-Y]
 [-x trusted.txt_file]
 [--maxconn maximum_connections] [--show-fi] [--hide-vcc]
NULL

在网上搜索发现,是因为:后来在这个机器上安装了 Sybase 数据库。安装 Sybase 后,导致环境变量发生了改变导致 bcp 命令出错。

如何恢复 SQL Server 的 bcp 命令的正常使用?

我发现,安装了 Sybase 后,Path 的变量值为:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\sybase\dll;c:\sybase\bin;C:\Program Files\Microsoft SQL Server\80\Tools\BINN;C:\Program Files\Sybase\Adaptive Server Anywhere 6.0\win32;c:\sybtools\WIN32;c:\sybtools\ASEP

而安装 SQL 未安装 Sybase 的 Path 变量值为:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Microsoft SQL Server\80\Tools\BINN

可以发现影响 bcp 的就是 「C:\Program Files\Microsoft SQL Server\80\Tools\BINN」 这一行。所以将 Path 的变量值根据实际情况修改回来就可以正常使用 SQL 的 bcp 命令了。测试通过。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注