写入DataTable时缺少.CSV中的一些值

本文关键字:CSV DataTable 写入 | 更新日期: 2023-09-27 18:19:48

我正在从外部获取.csv文件,并使用OLEDB写入数据表。它运行良好,但一行中有一个值没有出现在表中。

我要写入数据表的代码是

File1.PostedFile.SaveAs(Server.MapPath("Uploads''" + StrFileName));
TextBox2.Text = StrFileName;
int i = 0;
string strCon;
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Uploads''") + "; Extended Properties = '"Text;HDR=YES;FMT=Delimited'"";//
String abc = TextBox2.Text;
OleDbConnection olecon = new OleDbConnection(strCon);
OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [" + abc + "]", strCon);
DataTable myds = new DataTable();
myda.Fill(myds);

我的问题是,在从.CSV获得表格后,我一行接一行地读取并插入我的sql server表,但中间的一行在.CSV文件中有数据,但没有出现在数据表中。

这就是我获取数据的方式:

for (i = 0; i <= myds.Rows.Count - 1; i++)
{
    String si21;
    String si11 = "0";
    if (myds.Rows[i][5].ToString().Length == 9)
    {
        si21 = si11 + myds.Rows[i][5].ToString();
    }
    else
    {
        si21 = myds.Rows[i][5].ToString();
    }
} 

一行(例如:2507141012)中只有一个具有10位数字的特定值丢失,但其他行的其余10位数字值正常出现。像一样在sql表中插入

109   0408143119         NULL   NULL    0     2.3   NULL    NULL    NULL    NULL    NULL    
110  --heres value miss--  NULL NULL    NULL    0   2.19    NULL    NULL    NULL    NULL
111 0408143117         NULL   NULL    NULL    0    2.29    NULL     NULL    NULL    NULL    

有人帮我。

写入DataTable时缺少.CSV中的一些值

我也遇到了同样的问题。当看到数据库中的数据时,我发现许多列的数据都被遗漏了。您可以使用以下方法来解决这个问题。

string CSVFilePathName = @file.DirectoryName + "''" + file.Name;
                        string[] Lines = File.ReadAllLines(CSVFilePathName);
                        string[] Fields;
                        Fields = Lines[0].Split(new char[] { ',' });
                        int Cols = Fields.GetLength(0);
                        DataTable dt = new DataTable();
                        //1st row must be column names; force lower case to ensure matching later on.
                        for (int i = 0; i < Cols; i++)
                            dt.Columns.Add(Fields[i].ToLower(), typeof(string));
                        DataRow Row;
                        for (int i = 1; i < Lines.GetLength(0); i++)
                        {
                            Fields = Lines[i].Split(new char[] { ',' });
                            Row = dt.NewRow();
                            for (int f = 0; f < Cols; f++)
                                Row[f] = Fields[f];
                            dt.Rows.Add(Row);
                        }