测试环境如下:
FMOBILE     PHONETYPE  FSYNCFLAG  FNEW_GROUPID
7734234059 1 2 1773004375
7734234148 1 2 1773004375
7734234142 1 2 1773004375
7738225886 0 2 1773004377
7732932609 0 2 1773004379
7737188864 0 2 1773004381
7737181205 0 2 1773004381
7737237793 1 2 1773004393
7738188887 1 2 1773004395
7738182863 1 2 1773004395根据FNEW_GROUPID判断,将相同FNEW_GROUPID的数据取出来,导出为按照FNEW_GROUPID字段值命名的TXT或XLS的文档,能实现么?
比如上面最终将导出6个文档,其中1773004375.txt,文件内容如下
7734234059, 1, 2, 1773004375
7734234148, 1, 2, 1773004375
7734234142, 1, 2, 1773004375
各个字段以“,”分隔,不知道这样说明白了么?请高手帮忙,谢谢!

解决方案 »

  1.   

    --创建测试数据:Test
    create table Test(FMOBILE bigint,PHONETYPE int,FSYNCFLAG int,FNEW_GROUPID bigint)
    insert Test
    select 7734234059,1,2,1773004375 union all
    select 7734234148,1,2,1773004375 union all
    select 7734234142,1,2,1773004375 union all
    select 7738225886,0,2,1773004377 union all
    select 7732932609,0,2,1773004379 union all
    select 7737188864,0,2,1773004381 union all
    select 7737181205,0,2,1773004381 union all
    select 7737237793,1,2,1773004393 union all
    select 7738188887,1,2,1773004395 union all
    select 7738182863,1,2,1773004395
    go--数据BCP成文本文件
    declare @FNEW_GROUPID bigint,@Cmd varchar(400)
    declare curTest cursor for select FNEW_GROUPID from Test group by FNEW_GROUPID
    open curTest
    fetch next from curTest into @FNEW_GROUPID
    while @@fetch_status=0
    begin
    --注意修改数据库名称和文件存放位置,这里存放在“D:\”。
    set @Cmd='bcp "select * from 数据库名称.dbo.Test where FNEW_GROUPID='+rtrim(@FNEW_GROUPID)+'" queryout "D:\'+rtrim(@FNEW_GROUPID)+'.txt" -c -q -T -t ","'
    exec master.dbo.xp_cmdshell @Cmd,no_output
    fetch next from curTest into @FNEW_GROUPID
    end
    close curTest
    deallocate curTest
    --删除测试
    drop table Test
      

  2.   

    首先建个同样列的表,然后用bcp 导入到表里,同时生成 fmt格式文件,要的就是格式文件
    bcp pubs..[tbname] in 你的.txt -U"sa" -P"pwd"; 同时生成格式文件,
    举例:
    8.0
    9
    1       SQLCHAR       0       11      ","                       1     au_id        Chinese_PRC_CI_AS
    2       SQLCHAR       0       40      ","                       2     au_lname     Chinese_PRC_CI_AS
    3       SQLCHAR       0       20      ","                       3     au_fname     Chinese_PRC_CI_AS
    4       SQLCHAR       0       12      ","                       4     phone        Chinese_PRC_CI_AS
    5       SQLCHAR       0       40      ","                       5     address      Chinese_PRC_CI_AS
    6       SQLCHAR       0       20      ","                       6     city         Chinese_PRC_CI_AS
    7       SQLCHAR       0       2       ","                       7     state        Chinese_PRC_CI_AS
    8       SQLCHAR       0       5       ","                       8     zip          Chinese_PRC_CI_AS
    9       SQLBIT        0       1       "\r\r\n"                  9     contract     ""第三列为字段长度,第五列为自段序列号,相当于id,,下一步把你的格式文件三和五列不需要导入的字段都改为0,,这样
    再根据这个格式文件就能导入成你需要的表了,,
    bcp pubs..[你的表名] in 你的.txt -f"你的格式文件路径" -U"sa" -P"pwd";
    ok;
    试一下吧