我的目的是通过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);
}
}
}
我的问题是:
由于csv文件具有不同的列顺序,因此我要创建不同的列顺序数据表(由于要插入一个表,因此需要创建相同的列顺序数据表)。
不知道如何csvData.Row。添加正确的列数据