如何将具有不同列顺序的多个CSV文件中的特定列插入C#中的一张表?

时间:2019-01-29 08:11:37

标签: c# csv oracle10g

我的目的是通过c#(Oracle)将csv数据插入一个表中。

我有几个具有不同列顺序的csv文件。

它们都差不多有10万行。

这些csv文件的共同点是某些列具有相同的名称。

因此,我需要按列名从不同的列顺序csv文件中提取数据。

我的代码有很多问题(对每个csv执行此操作):

using (OracleConnection con = dbConn.OpenDB(ConfigurationManager.ConnectionStrings[Constants.CONNECTION_KEY].ToString()))
{
    using (OracleDataAdapter adptr = new OracleDataAdapter())
    {
        using (TextFieldParser parser = new TextFieldParser(ConfigurationManager.AppSettings[Constants.FILE1], Constants.ENCODING))
        {
            parser.TextFieldType = FieldType.Delimited;
            parser.SetDelimiters(",");
            parser.HasFieldsEnclosedInQuotes = true;
            string[] colFields = parser.ReadFields();
            for (int i = 0; i < colFields.Length; i++)
            {
                string column = colFields[i];
                DataColumn datecolumn = new DataColumn(column);
                datecolumn.AllowDBNull = true;
                csvData.Columns.Add(datecolumn);
                switch (column)
                {
                    case "RecordNo":
                        csvData.Columns.Add(datecolumn);
                        break;
                    case "Price":
                        csvData.Columns.Add(datecolumn);
                        break;
                    case "Seller":
                        csvData.Columns.Add(datecolumn);
                        break;
                    case "Shop":
                        csvData.Columns.Add(datecolumn);
                        break;
                    default:
                        break;
                }
            }

            while (!parser.EndOfData)
            {
                string[] fieldData = parser.ReadFields();
                for (int i = 0; i < fieldData.Length; i++)
                {
                    if (fieldData[i] == "")
                    {
                        fieldData[i] = null;
                    }
                }
                csvData.Rows.Add(fieldData[0]);
            }
        }

        using (OracleBulkCopy bulkCopy = new OracleBulkCopy(con))
        {
            bulkCopy.DestinationTableName = "TEST_CSV2";
            bulkCopy.WriteToServer(csvData);
        }
    }
}

我的问题是:

  1. 由于csv文件具有不同的列顺序,因此我要创建不同的列顺序数据表(由于要插入一个表,因此需要创建相同的列顺序数据表)。

  2. 不知道如何csvData.Row。添加正确的列数据

0 个答案:

没有答案