when'' then '04.04001'
bcp导出到excel后,04变成4了。。怎么办

解决方案 »

  1.   

    如果是sql server 2005及以后的版本,建议通过openrowset来插入数据,速度非常快,而且不容易出现各种错误,它最大的灵活性在于,在导入数据之前,可以先让你看看数据的样子,比如上面你说到04变成4了,确认没问题后,再导入表中:--先查看要导入的数据  
    select *  
    from   
    openrowset(bulk 'c:\wc.txt',             --要读取的文件路径和名称   
                    formatfile='c:\wc.fmt',  --格式化文件的路径和名称  
                      
                    firstrow = 2,            --要载入的第一行,由于第一行是标题,所以从2开始  
                    --lastrow  = 1000,       --要载入的最后一行,此值必须大于firstrow  
                      
                    maxerrors = 10,          --在加载失败之前加载操作中最大的错误数  
                    --errorfile ='c:\wc_error1.txt', --存放错误的文件  
                      
                    rows_per_batch = 10000                    --每个批处理导入的行数  
              ) as
            确认后insert into 表 select  …… from openrowset 就可以了哈
      

  2.   

    漏了别名:select *  
    from   
    openrowset(bulk 'c:\wc.csv',             --要读取的文件路径和名称   
                    formatfile='c:\wc.fmt',  --格式化文件的路径和名称  
                      
                    firstrow = 2,            --要载入的第一行,由于第一行是标题,所以从2开始  
                    --lastrow  = 1000,       --要载入的最后一行,此值必须大于firstrow  
                      
                    maxerrors = 10,          --在加载失败之前加载操作中最大的错误数  
                    --errorfile ='c:\wc_error1.txt', --存放错误的文件  
                      
                    rows_per_batch = 10000                    --每个批处理导入的行数  
              ) as t   
      

  3.   

    你的库对应的列是int还是varchar类型
      

  4.   

    bcp的时候用SELECT 语句来获取数据集再导出试试,SELECT那里转换一下类型convert(varchar(xx),列名)
      

  5.   

    导出的时候才生成的EXCEL是吧?把语句贴出来看看
      

  6.   


    这是导出语句exec master..xp_cmdshell 'bcp "SELECT * FROM test.dbo.tb_zh" queryout "e:\代销.xls" -c -T  -S"test" -U"sa" -P"sa"'  
    这是要导出的表
      

  7.   

    你把select * 改成select 列名,客户代码那里用convert成varchar试试
      

  8.   


    exec master..xp_cmdshell 'bcp "SELECT 商品编码, CONVERT(VARCHAR(20),客户代码) FROM test.dbo.tb_zh" queryout "e:\代销.xls" -c -T  -S"test" -U"sa" -P"sa"'  还是不行
      

  9.   

    哪个工具
    insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
    select * from 表
    这种?
      

  10.   

    我在查询结果里边加了,导出excel后还要双击单元格才能变成文本的04..
      

  11.   

    不是,sqlserver自带的导入导出工具,右键对应的库→任务→导入、导出数据
      

  12.   

    这个能导出到excel表吗?而且太麻烦了..很多表,
      

  13.   

    这个比你编写代码方便多了。你研究一下吧。好丰富的功能。可以导出excel
      

  14.   

    关键这个东西不是我自己用,是别的部门用,完全不会SQL的人,我是写好了,直接让他们执行存储过程,
      

  15.   

    拼接空格不行的话就拼接逗号
    有一个特殊符号在,导出来会当做字符处理,然后再修改excel格式
    把格式改成文本,再批量去掉拼接过来的特殊字符 
      

  16.   

    哦,我试了一下,确实在前面加个引号可以的,你不用挨个点击的哈,只要设置一下excel就可以了哈:1.点击 右边的“错误检查”按钮,弹出“错误检查”窗口
    2.点击“错误检查”窗口中的“选项”按钮,弹出“excel选项”窗口,把“文本格式的数字或者前面有撇号的数字”复选框去掉,单击“确定”按钮。
    3.关闭“错误检查”窗口,效果:
      

  17.   

    导出前将 字段处理一下呢  
    例如 select 'k'+ 客户代码
    这样导出来的客户代码就是 k04.04005 
    select '.'+ 客户代码
    这样导出来的客户代码就是 .04.04005 虽然不是长久的办法,但是如果着急可以先这样导  导出来可以在EXCEL 中处理。
      

  18.   

    还是不行是吧,你是使用ssis导出成excel,然后再看看,能不能倒入到其他工具: