2014-02-10 27 views
0

擅長與領先的0文件我需要上傳以下資料使用BCP命令時,我嘗試導出電話號碼發生導出表使用bcp

id  | phoneNo  | IsValid   
-------------------------------------- 
1  | 011   | 1 
2  | 011   | 1 
3  | 022   | 1 
4  | 022   | 1 
5  | 033   | 1 
6  | 011   | 1 

問題,以Excel文件。在Excel領先的零缺少。

什麼,我都試過這麼遠

alter procedure [dbo].[proc_generate_excel_with_columns] 
(  @SERVERNAME VARCHAR(100), 
     @db_name varchar(100), 
     @table_name varchar(100), 
     @file_name varchar(100)  
) 
as 

--Generate column names as a recordset 
declare @columns varchar(8000), @sql varchar(8000), @data_file varchar(100),@schemaTable varchar(100) 

--set @table_name='test' 
set @schemaTable='dbo.'+ @table_name 

select 
     @columns=coalesce(@columns+',','')+column_name+' as '+column_name 
from 
     information_schema.columns 
where 
     [email protected]_name 


select @columns=''''''+replace(replace(@columns,' as ',''''' as '),',',',''''') 

--Create a dummy file to have actual data 
select @data_file=substring(@file_name,1,len(@file_name)-charindex('\',reverse(@file_name)))+'\data_file.xls' 

--Generate column names in the passed EXCEL file 
set @sql='exec master..xp_cmdshell ''bcp " select * from (select '[email protected]+') as t" queryout "'[email protected]_name+'" -c -S'[email protected]+' -T ''' 

exec(@sql) 

--Generate data in the dummy file 

set @sql='exec master..xp_cmdshell ''bcp "select * from '+'['[email protected]_name+']'+'.'[email protected]+'" queryout "'[email protected]_file+'" -c -S'[email protected]+' -T ''' 
PRINT @sql 
exec(@sql) 

--Copy dummy file to passed EXCEL file 
set @sql= 'exec master..xp_cmdshell ''type '[email protected]_file+' >> '[email protected]_name+'''' 

exec(@sql) 

--Delete dummy file 
set @sql= 'exec master..xp_cmdshell ''del '[email protected]_file+'''' 
exec(@sql) 

我怎樣才能解決這個問題?我發現Solution here,但它提到使用這樣的代碼。

SELECT '="' + phoneNo+ '"' from Phone 

但似乎我不能拿出這個解決方案。我該如何克服這個問題。

謝謝

回答

0

爲此我創建了中間表,我在bcp命令中使用該表。

create table temp_WriteDataToFile(PHONE text, IsValid varchar(1)) 

insert into temp_WriteDataToFile 
select '="'+ PHONE +'"',ACMA,convert(varchar(25)) from temp_ProcessData 

它需要在以下格式獲得價值:

="011 " 

那麼它將允許在Excel/CSV命令與前導零的