如何使用命令行将特定表从SQL Server数据库导出到带有引号的CSV文件?

时间:2015-08-10 09:05:46

标签: database sql-server-2008 command-line export-to-csv bcp

我想从SQL Server数据库导出整个表。

要求是:

  1. 值应使用双引号引用。
  2. 某些值非常长,因此该方法应支持非常长的值。
  3. 'NULL'值shuold作为空字符串导出到CSV(即“”,“
  4. 我不知道列是什么,只是数据库表名,所以请不要提出明确包含列名的查询
  5. 示例行:

    $scope.myDate=new Date();
    {field:'getValue("weight",myDate)',displayName:'Weight'},
    

    应导出为:

    1,some
    very
    
    long
    value
    which might contain a comma,
    or a newline, etc...,9,\path\tofile,444,X,,2011-01-01,
    

    我尝试过使用"1","some very long value which might contain a comma, or a newline, etc...","9","\path\tofile","444","X","","2011-01-01",

    BCP

    但它不包含带引号的值。

    由于

1 个答案:

答案 0 :(得分:0)

bcp "select quotename(isnull(col1, \"\"), '\"') as col1 from db.schema.table" queryout TABLENAME.csv -U username -P password -S server -c -t',' 

不知道你对"长期值的定义"是,但QUOTENAME()限制为128个字符。如果您需要支持更长时间,请尝试CONCAT(),或者滚动您自己的功能。对于转义双引号,您也可以尝试使用CHAR(34)。