通过ReadtoEnd和无序线读取csv文件?

时间:2018-01-24 13:25:08

标签: c# csv memorystream

我已经使用MemoryStream读取了一个csv文件,并将所有数据插入到datatable中。  我将数据表中的所有行插入到数据库中。但在数据库中,无序行。  这是示例代码:

  using (Stream stream = new MemoryStream(bytes))
                {
                    using (TextFieldParser reader2 = new TextFieldParser(stream, Encoding.GetEncoding(1256)))
                    {
                        string lineString = "";

                        var firstLine = reader2.ReadLine();
                        lineString = reader2.ReadToEnd();
                        var largeText = lineString.Split(this.RecordDelimiter);

                        foreach (var item in largeText)
                        {
                            if (!string.IsNullOrEmpty(item))
                            {
                                DataRow row = dt.NewRow();

                                row[0] = _databaseRepository.GetSequencerNextVal("cms_batchfile_records_seq");
                                row[1] = Convert.ToInt32(requestId);
                                row[2] = DateAndTime.GetServerDate();
                                row[3] = DateAndTime.GetServerTime();
                                row[4] = null;
                                row[5] = null;
                                row[6] = Convert.ToInt32(formatId);
                                row[7] = (int)BatchFileRecords_ProcessStatusEnum.NotProcess;
                                row[8] = null;
                                row[9] = item;

                                dt.Rows.Add(row);

                                _log.Info("Service"+item);
                            }
                        }
                    }
                }

                _batchFileRecordsRepository.InsertDatas(dt);


public void InsertDatas(DataTable dt)
{
    try
    {
        BatchFileRecords item;
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            item = new BatchFileRecords()
            {
                Record_id = Convert.ToInt32(dt.Rows[i].ItemArray[0]),
                Request_id = Convert.ToInt32(dt.Rows[i].ItemArray[1]),
                Record_date = dt.Rows[i].ItemArray[2].ToString(),
                Record_time = dt.Rows[i].ItemArray[3].ToString(),
                Process_date = dt.Rows[i].ItemArray[4].ToString(),
                Process_time = dt.Rows[i].ItemArray[5].ToString(),
                Dataformat_id = Convert.ToInt32(dt.Rows[i].ItemArray[6]),
                Processstatus = Convert.ToInt32(dt.Rows[i].ItemArray[7]),
                Processresult = dt.Rows[i].ItemArray[8].ToString(),
                Data = dt.Rows[i].ItemArray[9].ToString()
            };

            _unitOfWork.Session.Save(item);
        }

        _unitOfWork.Commit();
    }
    catch (Exception ex)
    {
        throw;
    }
}

例如我的文件是:

2506737718,WFP,t,t,13830811,241641941709,9190517705,,F,,,14160
2506156741,WFP,t,t,13840915,409742096044,9195690240,,F,,,14160
2506158590,WFP,t,t,13840318,038664583449,9182550182,,F,,,14160
db中的

是:

2506737718,WFP,t,t,13830811,241641941709,9190517705,,F,,,14160
2506158590,WFP,t,t,13840318,038664583449,9182550182,,F,,,14160
2506156741,WFP,t,t,13840915,409742096044,9195690240,,F,,,14160

主键是使用音序器设置的Record_id。

0 个答案:

没有答案