【问题标题】:how to export sql data to csv using bcp如何使用 bcp 将 sql 数据导出到 csv
【发布时间】:2017-06-17 16:32:25
【问题描述】:

我使用简单的代码

declare @sql varchar(8000) 
select @sql  = 'bcp ExcelAnalysis.dbo.ClearDB out c:\csv\comm.txt -c -t, -T -S '+ @@servername 
exec master..xp_cmdshell @sql 

但是这段代码导出了我所有的表,但我只需要一些字段和条件 喜欢:

declare @sql varchar(8000) 
select @sql = 'bcp 
SELECT 

      ,[vl]
      ,[data]
      ,[URL]
      ,[parse]
      ,[Strata]
      ,[Id]
   FROM [ExcelAnalysis].[dbo].[ClearDB] where [data]> "01.05.2017" and NOT [vl] ="mag"and NOT [vl] ="Maxximo"   out c:\csv\status.txt -c -t, -T -S '+ @@servername 
exec master..xp_cmdshell @sql 

但是如果我使用任何字段,bcd 会返回带有他的语法的消息。 怎么改正?

【问题讨论】:

  • 在视图中创建查询并将其用作数据库对象
  • 你能告诉我吗?我不知道。我是新手

标签: sql-server csv bcp


【解决方案1】:

第一部分:在数据库中创建一个视图,第二部分执行语句以将结果转换为 CSV。如果您需要更多帮助,请告诉我

use [ExcelAnalysis].
go
;

create view [dbo].[vw_ClearDB] as
SELECT 

      [vl]
      ,[data]
      ,[URL]
      ,[parse]
      ,[Strata]
      ,[Id]
   FROM [dbo].[ClearDB] where [data]> "01.05.2017" and NOT [vl] ='magand'
   NOT [vl] ='Maxximo'

   GO

   ;


declare @sql varchar(8000) 
select @sql  = 'bcp ExcelAnalysis.dbo.vw_ClearDB out c:\csv\comm.txt -c -t, -T -S '+ @@servername 
exec master..xp_cmdshell @sql

【讨论】:

  • 你能告诉我,我确实喜欢你,但是错误'消息 102,级别 15,状态 1,过程 vw_ClearDB,第 29 行“GO”结构附近的语法错误。'
  • 第一个 BCP 参数直接输入查询,第二个输入 `queryout。
  • 对于视图方法,用单引号而不是双引号将字符串文字括起来。
  • 我明白了。分号必须在 GO 之前,查询之后。谢谢。)
  • 希望它解决了@D.Joe。抱歉现在才看到你的消息,服务器上的智能感知应该会自行解决
【解决方案2】:

Bcp queryout 选项应该被使用。

语法是:

SET @sql = 'bcp "SELECT [vl]
            ,[data]
            ,[URL]
            ,[parse]
            ,[Strata]
            ,[Id]
        FROM [dbo].[ClearDB] 
        WHERE [data] > ''01.05.2017''
        AND NOT [vl] =''mag''
        AND NOT [vl] =''Maxximo''" 
    queryout c:\csv\comm.txt
    -c -t, -T -S '+ @@servername + '\' + @@servicename

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 2015-11-03
    • 1970-01-01
    • 2020-05-07
    • 2014-07-26
    • 2016-05-27
    相关资源
    最近更新 更多