declare @s varchar(8000),@er varchar(10)
set @er='er'
set @s='bcp "test_Doc..'+@er+'" in 172.20.52.87\c:\1.txt -c -S"Fred" -U"sa" -P"sasa"'
EXEC master..xp_cmdshell @s

解决方案 »

  1.   

    提示:
    1.SQLState = S0002, NativeError = 208
    2.Error = [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'test_Doc..er'.
    3.NULL
      

  2.   

    是不是需要在库里先把表建好才能导入数据呢?
    还是导入数据的同时系统就给你建了表,它的字段类型都是VARCHAR(255)、字段个数就是根据制表符系统分析所得出的个数?
      

  3.   

    USE test_Doc
    GOIF EXISTS (SELECT 1 FROM  sysobjects WHERE id = object_id('address_list') AND type = 'U')
       DROP TABLE address_list
    GOCREATE TABLE address_list (
       id                   NUMERIC(20)      IDENTITY,
       name                 VARCHAR(100)         NOT NULL,
       Tel                  VARCHAR(50)          NULL,
       mobile_Tel           VARCHAR(50)          NULL,
       position             VARCHAR(40)          NULL,       
       mail                 VARCHAR(50)          NULL,
       department           VARCHAR(100)         NOT NULL
    )
    GOUSE master
    GOEXEC master..xp_cmdshell 'bcp "test_Doc..[address_list]" in "\\172.20.52.87\c:\1.txt" -c -S"Fred" -U"sa" -P"sasa"'报错:
    1.SQLState = S1000, NativeError = 0
    2.Error = [Microsoft][ODBC SQL Server Driver]Unable to open BCP host data-file
    3.NULL请大家帮我分析一下是什么原因啊,很急!!!
      

  4.   

    表不用建的,SQL数据库会根据制表符生成一个表。
    Declare @s varchar(1000),@er varchar(10)
    Set @er='er'
    Set @s='bcp "test_Doc..'+@er+'" in \\172.20.52.87\c:\1.txt -c -S"Fred" -U"sa" -P"sasa"'
    EXEC master..xp_cmdshell @s
      

  5.   

    /*
     * 新建address_list表,准备接收数据
     */USE test_Doc
    GOIF EXISTS (SELECT 1 FROM  sysobjects WHERE id = object_id('address_list') AND type = 'U')
       DROP TABLE address_list
    GOCREATE TABLE address_list (
       id                   NUMERIC(20)         IDENTITY,
       name                 VARCHAR(100)         NOT NULL,
       Tel                  VARCHAR(50)          NULL,
       mobile_Tel           VARCHAR(50)          NULL,
       position             VARCHAR(40)          NULL,       
       mail                 VARCHAR(50)          NULL,
       department           VARCHAR(100)         NOT NULL
    )
    GO/*
     * BCP命令导入
     */
    USE master
    GOEXEC master..xp_cmdshell 'bcp "test_Doc..[address_list]" in "d:\Tomcat 5.0\webapps\文档管理用户系统测试数据.txt" -c -S"Fred" -U"sa" -P"sasa"'--------------------------------------------------------------------------
    报错:
    NULL
    Starting copy...
    SQLState = S1000, NativeError = 0
    Error = [Microsoft][ODBC SQL Server Driver]Unexpected EOF encountered in BCP data-file
    NULL
    0 rows copied.
    Network packet size (bytes): 4096
    Clock Time (ms.): total       10
    NULL请问各位高手这是怎么回事啊?
      

  6.   

    To:yifanlxj(利建工作室)
    好像“表不用建的”不行啊!
    如果只写这段SQL:
    /*
     * BCP命令导入
     */
    USE master
    GOEXEC master..xp_cmdshell 'bcp test_Doc..address_list in "d:\Tomcat 5.0\webapps\文档管理用户系统测试数据.txt" -c -t"," -S"Fred" -U"sa" -P"sasa"'会出这样的报错:
    SQLState = S0002, NativeError = 208
    Error = [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'test_Doc..address_list'.
    NULL另外,我找到了Unexpected EOF encountered in BCP data-file的原因:
    我的“字段终止符”是逗号(由于用企业管理器导数据时一路next的结果)而非默认的制表符。
    所以SQL改为我在这条回复中写的就对了(表还是要建的)。
    但是还有一个问题:我的“文本限定符”是双引号而不是NULL,这样由那个txt文件导入数据库中的数据就都有了双引号,我想导入的数据不要双引号不知该怎么办?