关于循环读取txt表内数据到数据库中
野鼻孔 2016-07-11 12:22:55 Hi,各位大神,
想实现这样一个逻辑,假设:文件夹内有10个txt文本文档,里面每个对应一个sql内的表,且每个文本文档(以及sql中的表)列数均不同。
这边我读取了每个txt的路径。然后每个字段用"|"符号隔开。
我想实现每个txt文本文件自动匹配sql里的表,且列也自动匹配,而不是写10个case.每个case需要写几十个columns.add.放在datatable 中。有什么好办法吗?
private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
//dt.Columns.Add("a");
//dt.Columns.Add("b");
//dt.Columns.Add("c");
//dt.Columns.Add("d");
foreach (string filename in Directory.GetFiles("D:\\InstinctData", "*.txt", SearchOption.AllDirectories))
{
Console.WriteLine(filename);
string strFilePath = filename;
FileStream fs = new FileStream(strFilePath, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs, System.Text.Encoding.Unicode);
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source =.;Database=~;Uid=~;Pwd=~";
conn.Open();
string strLine = sr.ReadLine();
while (strLine != null)
{
string[] strArray = new string[4];
strArray = strLine.Split('|');
DataRow dr = dt.NewRow();
dr[0] = strArray[0];
dr[1] = strArray[1];
dr[2] = strArray[2];
dr[3] = strArray[3];
string sql = "insert into A_Test values('" + dr[0] + "','" + dr[1] + "','" + dr[2] + "','" + dr[3] + "')";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
dt.Rows.Add(dr);
strLine = sr.ReadLine();
}
sr.Close();
fs.Close();
conn.Close();
//string filecontent = string.Join("\r\n", System.IO.File.ReadAllLines(filename));
//Console.WriteLine(filecontent);
}
}
求大神给点小代码启发一下。因为这边是insert 语句,必须注明列的。。。很困难。
或者先把sql表中的列读取到gridview中?然后循环列写在insert语句中??
我这边假设有100个columns怎么办?
谢谢