Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 名称为句点的BCP数据库_.net_Sql Server_Bcp - Fatal编程技术网

.net 名称为句点的BCP数据库

.net 名称为句点的BCP数据库,.net,sql-server,bcp,.net,Sql Server,Bcp,我在使用SQL BCP进程加载带有数据的表时遇到问题。我从.NET应用程序调用它,因此我执行xp\u cmdshell可执行文件来运行bcp命令。以下是其中一个命令的外观: EXEC master..xp_cmdshell 'bcp "[D001Test.Restore].[dbo].[GeneralComments]" in "<DataFile>" -q -c -t "|_|" -r "|+~+|" -k -V80 -a33000 -E -STest' EXEC master.

我在使用SQL BCP进程加载带有数据的表时遇到问题。我从.NET应用程序调用它,因此我执行xp\u cmdshell可执行文件来运行bcp命令。以下是其中一个命令的外观:

EXEC master..xp_cmdshell 'bcp "[D001Test.Restore].[dbo].[GeneralComments]" in "<DataFile>" -q -c -t "|_|" -r "|+~+|" -k -V80 -a33000 -E -STest'
EXEC master..xp|u cmdshell'bcp'[D001Test.Restore].[dbo].[GeneralComments].“-q-c-t”| u124; |“-r”|+~+|”-k-V80-a3300-E-STest'

当我要导入的数据库名称(在本例中为D001Test.Restore)中有一个“.”时,bcp命令将失败。这有什么办法吗?我试过带括号和不带括号。我可能需要将数据导入一个新的数据库,并在完成后将其重命名为所需的名称

您不需要-q参数和引号。文档中说明了有关q参数的以下内容:

使用此选项指定数据库, 所有者、表或视图名称 包含空格或单个引号 做记号把整个三部分都围起来 带引号的表或视图名称 (“”)

数据库名称既不包含空格,也不包含单引号

试试这个:

bcp [D001Test.Restore].dbo.GeneralComments in "<DataFile>" -c -t "|_|" -r "|+~+|"
-k -V80 -a33000 -E -STest
bcp[D001Test.Restore].dbo.GeneralComments在“-c-t”| | | | | | | |+~+|”中
-k-V80-a33000-E-STest

我很感激你的回答。我将测试它。但是,我仍然存在数据库名称中有空格和句点的问题。我尝试性地实现了一个解决方案,使用带下划线的临时表来替换句点,但这是一个相当丑陋的概念。@Kevin如果数据库名称中有空格和句点,则需要引号。bcp“[D001 Test.Restore].dbo.GeneralComments”在“--c-t”| | | | | | | |+~+|”-k-V80-a3000-E中-STest@Bill不幸的是,这不起作用。如果使用引号,则必须对bcp流程进行编程,以查找句点,而不考虑括号。因此:EXEC master..xp_cmdshell'bcp'[d01restore.Generic Test].dbo.GeneralComments“out”@Kevin只删除-q参数,但不要碰引号。我在“-c-t”| |“-r”中尝试了bcp“[D001 Test.Restore].dbo.GeneralComments”|+~+|“-k-V80-a33000-E-STest在SQL Server 2005上运行。@Kevin您是否尝试过使用SQL Server 2005安装的bcp.exe(C:\Program Files\Microsoft SQL Server\90\Tools\Binn\bcp.exe,文件版本:2005.90.4035.0)从SQL Server 2000导出/导入数据?Try-V80参数。我不能尝试,因为我只有SQLServer2005和2008。