从 SQL 导出时,列名未保存在文本文件中

Posted

技术标签:

【中文标题】从 SQL 导出时,列名未保存在文本文件中【英文标题】:Column names are not saving in text file while exporting from SQL 【发布时间】:2016-02-08 16:21:20 【问题描述】:

我正在从文本文件中的 SQL 导出表,数据导出正常,但列名没有出现在文本文件中。 这是代码:

   public static void getfiles()
   
       SqlDataReader reader;
       string query = "Select * from tTable";
       string connStr = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
       string strDelimiter = "\"|\"";
       string strFilePath = @"path";
       StringBuilder sb = new StringBuilder();

       using (SqlConnection conn = new SqlConnection(connStr))
       
           conn.Open();
           using (reader = new SqlCommand(query, conn).ExecuteReader())
           
               if (reader.HasRows)
                
                   Object[] items = new Object[reader.FieldCount];

                   while (reader.Read())
                   
                       reader.GetValues(items);
                       foreach (var item in items)
                       

                           sb.Append(item.ToString());
                           sb.Append(strDelimiter);
                       
                       sb.Append("\n");
                   
               
           
           conn.Close();
           File.WriteAllText(strFilePath, sb.ToString());
       
   

我不知道在这个方法中要做什么改变

【问题讨论】:

可以从SqlDataReader中获取列名...***.com/questions/681653/… 你不要在任何地方写列名。 您可以在选择语句中包含列名 【参考方案1】:

您根本不写列名。这可以通过reader.GetName() 方法实现,如下所示:

using (reader = new SqlCommand(query, conn).ExecuteReader())

    for (int i=0; i<reader.FieldCount; i++)
    
        sb.Append(reader.GetName(i));
        sb.Append(strDelimiter);
    
    sb.Append(Environment.NewLine);

    // your code here...
    if (reader.HasRows)
    
        // etc...
    

【讨论】:

【参考方案2】:

您可以在选择语句中包含列名 ....

Select Column1 from(select Sorter = 1, Convert(VARCHAR(max), Column1) as Column1
    from TableName union all
    select 0, 'Column1') X
order by Sorter, Column1

【讨论】:

以上是关于从 SQL 导出时,列名未保存在文本文件中的主要内容,如果未能解决你的问题,请参考以下文章

mysql导入导出

将模型导出到没有列名或标题的文本文件(仅值)

从 T-SQL 导出到 Excel 的问题,包括列名和未导出的列上的排序

使用 bcp 实用程序和 SQL Server 2008 将表导出到带有列标题(列名)的文件

使用 Powershell 从 SQL Server 2008 R2 导出到固定宽度的文本文件

当我放大从 Photoshop CC 导出的 pdf 文件时,某些文本在 pdf 文件上不清晰。我该如何解决这个问题?