现有一个文本文件,第一行三列,其它的都为7列:20110525|619|6298877.56
19169825|6227003548010154317|1231.00|N|1110410400473155413|411282|李仙苗
19169829|4367423430420247106|17000.00|N|1110410400134818412|410127|孙西芝
19169834|2480453980130134951|5000.00|N|1110410400753107442|410806|杨凤勤现在要把第一行导入表A中,第二行以后的导入表B中;
怎样实现?

解决方案 »

  1.   

    EXEC master..xp_cmdshell 'BCP "SELECT TOP 1 * FROM tb" queryout c:\currency2.txt -c -U"sa" -P"password"' 
      

  2.   

    BCP还可以通过简单地设置选项对导出的行进行限制。 EXEC master..xp_cmdshell 'BCP "SELECT TOP 20 * FROM tb" queryout c:\currency2.txt -F 10 -L 13 -c -U"sa" -P"password"' 这条命令使用了两个参数-F 10和-L 13,表示从SELECT TOP 20 * FROM AdventureWorks.sales.currency所查出来的结果中取第10条到13条记录进行导出
      

  3.   


    --取第一行数据,成功!
    BULK INSERT tb2 FROM 'D:\tt.TXT'
    WITH(FIELDTERMINATOR = '|',ROWTERMINATOR = '0x0a',BATCHSIZE=1,FIRSTROW=1,LASTROW=1,KEEPNULLS,CODEPAGE='APC',KEEPIDENTITY)--取第二行以后的数,失败!
    BULK INSERT tb1 FROM 'D:\tt.TXT'
    WITH(FIELDTERMINATOR = '|',ROWTERMINATOR = '\n',BATCHSIZE=0,FIRSTROW=2,KEEPNULLS,CODEPAGE='APC',KEEPIDENTITY)
      

  4.   

    我建议你弄个临时表,全部设置成varchar型,先导进去,然后再根据你的需求进行字段类型的转换后导入其他的表.
      

  5.   

    不行,这样直接报错:
    服务器: 消息 4832,级别 16,状态 1,行 1
    大容量插入: 在数据文件中遇到意外的文件结尾 (EOF)。
    服务器: 消息 7399,级别 16,状态 1,行 1
    OLE DB 提供程序 'STREAM' 报错。提供程序未给出有关错误的任何信息。
    OLE DB 错误跟踪[OLE/DB Provider 'STREAM' IRowset::GetNextRows returned 0x80004005:  提供程序未给出有关错误的任何信息。]。
    语句已终止。