应用程序将来自SQL存储过程的结果存储到给定的csv中。文件必须在文件名中包含时间戳。通过我的任何研究,我一直未能成功找到解决方案。这是代码,请记住,时间戳需要有日期,最重要的是时间'hh:ss'
string db = "databasename";
string startTime = "2018-04-17 00:00:00.000";
string endTime = "2018-04-17 23:59:59.997";
string LiquorFile = "LiquorFile.csv";
using (SqlConnection con = new SqlConnection(GlobalConfig.CnnString(db)))
{
var tableName = "liqTemp";
var fileName = tableName + ".csv";
var recordCount = 0;
var fileCount = 0;
SqlCommand scCmd = new SqlCommand("dbo.spGetInventory_Liquor", con);
scCmd.CommandType = CommandType.StoredProcedure;
SqlDataReader reader;
con.Open();
scCmd.Parameters.Add("@StartDate", SqlDbType.DateTime).Value = startTime;
scCmd.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = endTime;
reader = scCmd.ExecuteReader();
StreamWriter writer = null;
try
{
while (reader.Read())
{
if (writer == null || recordCount == 50000)
{
if (writer != null)
{
writer.Close();
writer.Dispose();
}
fileName = tableName + "_" + (++fileCount).ToString() + ".csv";
writer = new StreamWriter(fileName);
}
recordCount++;
writer.WriteLine("\t{0}\t{1}", reader.GetDecimal(0), reader.GetString(1));
}
reader.NextResult();
}
finally
{
if (writer != null)
{
writer.Dispose();
}
}
}
通过此实现进行头脑风暴,我认为可以通过开始和结束时间字符串将其合并。
我仍然在考虑这个问题的标题。
答案 0 :(得分:0)
似乎要与原始CSV数据一起存储一些元数据。某些文件类型取决于文件类型,具有大量的元数据属性,例如作者身份和公司名称等。因此,在这种情况下,我可能会选择使用令人惊叹的ClosedXML库以XSLX格式存储CSV数据。 XSLX文件类型具有许多元数据属性,可以存储您的时间戳等等。
下面是将属性添加到Docx文件的示例。这只是表明Microsoft Office格式具有许多可以访问和使用的可用元数据属性。
{{3}}
using Microsoft.WindowsAPICodePack.Shell;
using Microsoft.WindowsAPICodePack.Shell.PropertySystem;
string filePath = @"C:\temp\example.docx";
var file = ShellFile.FromFilePath(filePath);
// Read and Write:
string[] oldAuthors = file.Properties.System.Author.Value;
string oldTitle = file.Properties.System.Title.Value;
file.Properties.System.Author.Value = new string[] { "Author #1", "Author #2" };
file.Properties.System.Title.Value = "Example Title";
// Alternate way to Write:
ShellPropertyWriter propertyWriter = file.Properties.GetPropertyWriter();
propertyWriter.WriteProperty(SystemProperties.System.Author, new string[] { "Author" });
propertyWriter.Close();
答案 1 :(得分:0)
认为它只是当前日期格式的简单使用。
fileName = tableName + "_" + DateTime.Today.ToString("yyyyMMddHHmmss") + ".csv";
其中的格式是您需要的任何格式-日期,时间,刻度等-任何需要的粒度。如果需要,您可以转到formo字符串“ o”将其降至十进制的亚秒。