自己做练习时做的一个小例子,有不足的地方。
前台代码:
<asp:FileUpload ID="fileImport" runat="server" />
在这边选中一个文件夹我是用过选中这个文件夹里的一个文件,然后在后台再通过获取该文件所在目录!这边非常的不妥,自己只是练习这样弄了!
后台代码:
{
string path = Path.GetDirectoryName(fileImport.PostedFile.FileName);
string[] list = Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories);
foreach (string file in list)
{
string fileName = Path.GetFileNameWithoutExtension(file);//获取文件名
string[] lines = File.ReadAllLines(file, Encoding.GetEncoding("gb2312"));
DataTable dataTable = new DataTable();//在内存中建立一个,创建一个表后要先创建列,再创建行
dataTable.Columns.Add("start");
dataTable.Columns.Add("end");
dataTable.Columns.Add("city");
dataTable.Columns.Add("info");
foreach (string line in lines)//遍历每个文件中数据
{
string[] str = line.Split('-');
string start = str[0];
string end = str[1];
string city = str[2];
string info = fileName;
DataRow row = dataTable.NewRow();//将数据存入dataTable 中
row["start"] = start;
row["end"] = end;
row["city"] = city;
row["info"] = info;
dataTable.Rows.Add(row);
}
using (SqlBulkCopy bulkcopy = new SqlBulkCopy(@"Server=.;Database=Data1200;Uid=sa;Pwd=;"))
{
bulkcopy.DestinationTableName = "T_PhoneInfo";//数据库中需要导入的表名
bulkcopy.ColumnMappings.Add("start", "StartNO");//前面参数是内存中表名称,后面是数据库字段名称
bulkcopy.ColumnMappings.Add("end", "EndNO");
bulkcopy.ColumnMappings.Add("city", "City");
bulkcopy.ColumnMappings.Add("info", "Info");
bulkcopy.WriteToServer(dataTable);//把数据写入到数据库
}
}
}