现有数据结构如下,共120万条记录
地市     id                号码
成都 102013930803 1898171
凉山 349900658468 1898153
宜宾 319027652344 1800810
成都 102006797673 1337810
成都 102013632037 1530804
攀枝花 125001121844 1333071
成都 102011126708 1334893
成都 102014739968 1530809 需求如下:将号码随机排列后,把结果分别输出到24个txt,每个txt有5万个号码。

解决方案 »

  1.   

    没人回?
    MSSQL有没有skip?
    结合first(top)随机排列后, 是神码意思
      

  2.   

    EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword' 這樣用語句分頁再導
      

  3.   

    按 id 降序排序,select top 5万 降序;select top 5万降序 ..(select top..10万 升序 ) ,以次导出
      

  4.   

    可以写个循环,拼字符串
    Select row_number() over(order by getdate()) no,* into #tb from dbname..tablename
    while @i<24
      set @str='EXEC master..xp_cmdshell ''bcp "Select * from #tb where no 
    between '+rtrim(@i)+' and '+rtrim((@i+1)*50000)+'" queryout c:\DT.txt'+rtrim(@i)+
     ' -c -Sservername -Usa -Ppassword'''
    exec(@str)
      

  5.   

    先隨機排好序,再分割為24個文件,再導出為.txt即可
      

  6.   

    用這選項試試
    [-Ffirst_row] [-Llast_row]BCP "SELECT  * FROM dbName.dbo.tableName" queryout c:/User.txt -F 50000 -L 100000-c -U"sa" -P"password" --第50000条到10000条记录