写入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
有人帮我。
我也遇到了同样的问题。当看到数据库中的数据时,我发现许多列的数据都被遗漏了。您可以使用以下方法来解决这个问题。
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);
}