Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C SQL导出格式_C#_Sql - Fatal编程技术网

C# C SQL导出格式

C# C SQL导出格式,c#,sql,C#,Sql,我在设置此代码以我喜欢的格式导出文本时遇到问题,任何提示都将非常有用 场景:我有一个从SQL查询填充的列表框。该列表框有一个按钮用于填充列表框2。列名称是从listbox1中选择的任何列,数据是相应的数据。我能够在数据集中设置这种格式,但我不得不将其更改为海量数据库 我无法将数据集代码格式化为此流代码。我需要以以下格式导出 Column name|Column name|Column name|Column name|Column name|Column name| 数据|数据|数据|数据|数

我在设置此代码以我喜欢的格式导出文本时遇到问题,任何提示都将非常有用

场景:我有一个从SQL查询填充的列表框。该列表框有一个按钮用于填充列表框2。列名称是从listbox1中选择的任何列,数据是相应的数据。我能够在数据集中设置这种格式,但我不得不将其更改为海量数据库

我无法将数据集代码格式化为此流代码。我需要以以下格式导出

Column name|Column name|Column name|Column name|Column name|Column name|
数据|数据|数据|数据|数据|数据|数据|数据|数据|数据|数据

SqlConnection con = new SqlConnection("Data Source=" + server + ";Initial Catalog=" + database + ";Integrated Security=" + security);
con.Open();
using (FileStream strm = new FileStream(exportfile, FileMode.Create))
{
    using (StreamWriter writer = new StreamWriter(strm))
    {
        SqlCommand cmd = new SqlCommand(sql, con);
        IDataReader rdr = cmd.ExecuteReader();
        while (rdr.Read())
        {
            writer.Write(rdr[0].ToString() + "|" + rdr[1].ToString());
        }
    }
这是完美导出的数据集代码:

DataTable tbltarget = dataset.Tables[0];
string output_text =
    tbltarget.Columns.Cast<DataColumn>().ToList()
    .Select(col => col.ColumnName)
    .Aggregate((current, next) => current + "|" + next) + "\r\n"
    +
    tbltarget.Rows.Cast<DataRow>().ToList()
    .Select(row => row.ItemArray.Aggregate((current, next) => current.ToString() + "|" + next.ToString().Replace("\n", "")))
    .Cast<string>().Aggregate((current, next) => current + "\r\n" + next);
File.WriteAllText(@"C:\InPrep\" + textBox1.Text + "\\CI\\cnr.txt", output_text);
更新代码:

using (FileStream strm = new FileStream(exportfile, FileMode.Create))
{
    using (StreamWriter writer = new StreamWriter(strm))
    {
        SqlCommand cmd = new SqlCommand(sql, con);
        SqlDataReader reader = cmd.ExecuteReader();
        for (int i = 0; i < reader.FieldCount; i++)
            writer.Write((i==0?"":"|") + reader.GetName(i));
        writer.Write("\n");
        while(reader.Read())
        {
            for (int i =0; i < reader.FieldCount; i++)
            writer.Write((i==0?"":"|") + reader[i].ToString().Replace(@"<me> ", string.Empty).Replace(@" </me>|", "").Replace(@" </me>", ";").Replace('\n', ' ').Replace('\r', ' ') + "|");
            writer.WriteLine();
        }
        reader.Close();
   }
}

问题在于你处理读者信息的方式。将代码的Console.Write*替换为Stream.Write*。试试这个

SqlDataReader reader = cmd.ExecuteReader();

//Print the column names.
for(int i=0; i < reader.FieldCount; i++)
    Console.Write((i==0?"":"|") + reader.GetName(i));
Console.WriteLine();

//Process each record, note that reader.Read returns one record at a time.
while(reader.Read())
{
    for(int i=0; i < reader.FieldCount; i++)
        Console.Write((i==0?"":"|") + reader[i].ToString().Replace('\r', ' ').Replace('\n', ' '));
    Console.WriteLine();
}
reader.Close();

你在问问题吗?你是说第二个代码fragmetn工作得很好,那么问题是什么呢?问题是我不能让顶部代码以与底部代码相同的格式导出。我太新了,无法理解如何让顶部代码导出输出文本,因为我能够将输出文本设置为.Columns.Cast和.Rows.Cast的数据集。底部代码在一个大块中完成所有操作,并耗尽内存。SQL表大约有300万行。上面的代码解决了内存问题,但是下面的代码正确地导出了,我如何让它们一起工作。这不能很好地处理行末尾的多条目。BDc | EDc | DDate | DType | DTitle | Autr | cip |生产:972328 | 972335 | 070305 | MS | SUCAL INV MIS:| VVM32792 XO WEL | | | |这是多条生产线,我希望你是指线馈送。您可以用空格替换\r\n来完成此操作。为了实现这一点,我稍微修改了代码,try-out实际上代表多条目,其中第三方程序添加了这些来处理其内部多条目显示。它工作得很好,现在如果它不在每行末尾添加一个额外的|,那就太完美了!事实上,我撒谎了,我无法让它停止在行尾写一个|。