将TXT文件中的数据整理成sql数据库
来源:互联网 发布:沈阳医疗软件代理 编辑:程序博客网 时间:2024/05/21 22:52
在工作中遇到一个问题,合作单位给了一个400M的txt文件,里面包含了工作中需要的数据,于是便有了这种需求和下面的代码,在此贴出来,共享。
TXT文件中数据排列规则:1、每一行是一条数据; 2、每个字段之间用|| 分割。
我首先用sql server 进行数据导入,但总是报错,因为该TXT文件中有些数据不完整,使得直接导入失败。
TXT文件截图
代码写的有点乱,主要是为例快速实现功能,其他的考虑少一些,见谅。
下面这段代码运行了3个多小时,完成了221万条记录的读取、分段和写入数据库
public partial class Form1 : Form { public Form1() { InitializeComponent(); } public static string[,] test; private void Form1_Load(object sender, EventArgs e) { string[] strRead = new string[30]; int EveryRow = 0; string line = ""; string path = "E:\\编程1\\WriteTXT\\WriteTXT.txt"; StreamReader sr = new StreamReader(path, Encoding.Default); StreamReader srWrite = new StreamReader(path, Encoding.Default); //先得到txt文件中的总行数,用来建立数组的第一纬度 int row = 0; while (!sr.EndOfStream) { line = sr.ReadLine(); row++; } MessageBox.Show(row.ToString()); test = new string[row, 20]; while (!srWrite.EndOfStream) { line = srWrite.ReadLine(); tiqu(line, EveryRow); EveryRow++; } //将数据写入数据库 string connStr = "Data Source=.;Initial Catalog=*****;User ID=sa;Password=***"; SqlConnection conn = new SqlConnection(); conn.ConnectionString = connStr; conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.Parameters.Add("@t0", SqlDbType.Text); cmd.Parameters.Add("@t1", SqlDbType.Text); cmd.Parameters.Add("@t2", SqlDbType.Text); cmd.Parameters.Add("@t3", SqlDbType.Text); cmd.Parameters.Add("@t4", SqlDbType.Text); cmd.Parameters.Add("@t5", SqlDbType.Text); cmd.Parameters.Add("@t6", SqlDbType.Text); cmd.Parameters.Add("@t7", SqlDbType.Text); cmd.Parameters.Add("@t8", SqlDbType.Text); cmd.Parameters.Add("@t9", SqlDbType.Text); cmd.Parameters.Add("@t10", SqlDbType.Text); cmd.Parameters.Add("@t11", SqlDbType.Text); cmd.Parameters.Add("@t12", SqlDbType.Text); cmd.Parameters.Add("@t13", SqlDbType.Text); cmd.Parameters.Add("@t14", SqlDbType.Text); try { for (int i = 0; i < row; i++) { string Sqlstr = string.Format("insert into zhuanliData (原序号,申请号,公开号,公开日,公告号,公告日,标题,申请日,代理人,代理机构,国省代码,发明人,申请人,优先权号,地址) values(@t0,@t1,@t2,@t3,@t4,@t5,@t6,@t7,@t8,@t9,@t10,@t11,@t12,@t13,@t14)"); cmd.Parameters["@t0"].Value = test[i, 0]; cmd.Parameters["@t1"].Value = test[i, 1]; cmd.Parameters["@t2"].Value = test[i, 2]; cmd.Parameters["@t3"].Value = test[i, 3]; cmd.Parameters["@t4"].Value = test[i, 4]; cmd.Parameters["@t5"].Value = test[i, 5]; cmd.Parameters["@t6"].Value = test[i, 6]; cmd.Parameters["@t7"].Value = test[i, 7]; cmd.Parameters["@t8"].Value = test[i, 8]; cmd.Parameters["@t9"].Value = test[i, 9]; cmd.Parameters["@t10"].Value = test[i, 10]; cmd.Parameters["@t11"].Value = test[i, 11]; cmd.Parameters["@t12"].Value = test[i, 12]; cmd.Parameters["@t13"].Value = test[i, 13]; cmd.Parameters["@t14"].Value = test[i, 14]; cmd.CommandText = Sqlstr; cmd.ExecuteNonQuery(); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } ////将二维数组test绑定到DataTable // DataTable ta = BingDTable(row); //dataGridView1.DataSource = ta; MessageBox.Show("导入数据完毕!恭喜恭喜!!本次共导入数据"+row.ToString()+ "条,可与数据库中数据总条数进行比较"); } private static DataTable BingDTable(int row) { DataTable ta = new DataTable(); for (int i = 0; i < 20; i++) { ta.Columns.Add("" + i, typeof(string)); } for (int i = 0; i < row; i++) { DataRow dr = ta.NewRow(); for (int j = 0; j < 20; j++) { dr[j] = test[i, j]; } ta.Rows.Add(dr); } return ta; } //读取第一个strRead[0]中的内容,并用||加以区分提取,尝试依次 public void tiqu(string strTQ, int EverRow2) { // int counter = Count(strTQ, "||"); //得到||的个数,也就是下面的循环次数 int k1, k2 = 0; int col = 1; k1 = strTQ.IndexOf("||"); //得到||在strTQ中的第一个位置 test[EverRow2, 0] = strTQ.Substring(0, k1); //先取出test[0,0]到k1之间的第一个子串 while (k1 > 0 && k2 < strTQ.Length - 4) { k2 = strTQ.IndexOf("||", k1 + 2); test[EverRow2, col] = strTQ.Substring(k1 + 2, k2 - k1 - 2); k1 = k2; col++; } }//tiqu()结束 public SqlConnection ConnDB() { string connStr = "Data Source=.;Initial Catalog=counttime;User ID=sa;Password=110"; SqlConnection conn = new SqlConnection(); conn.ConnectionString = connStr; return conn; } }
0 0
- 将TXT文件中的数据整理成sql数据库
- 将Excel或者Txt文件中的数据导入Oracle数据库
- PHP将数据库中的数据输出到txt文件,怎么读取txt文件
- 将TXT中的数据读入数据库
- php将txt文件数据导入数据库
- 将Sql Server数据库中的数据导出为Sql文件
- 如何将txt中的大数据通过PL/SQL导入数据库
- 将Excel文件中的数据导入SQL数据库中
- 将excel文件中的数据导入导出至SQL数据库
- 将txt文件中的数据批量插入到数据库中SqlBulkCopy
- 将txt中的数据存到Sql数据表中
- 将数据库中的数据内容写到.txt中
- 将txt中的数据插入到数据库中
- 存储过程将.txt.xls文件数据导入数据库表格
- 存储过程将.txt.xls文件数据导入数据库表格
- php 通过txt文件将数据装填入数据库
- php读取txt文件并将数据插入到数据库
- php读取txt文件并将数据插入到数据库
- Servlet引擎:Tomcat与Jetty比较
- 自定义PHP的错误报告处理方式
- 集训队专题(5.1)1003 maximum shortest distance
- Ubuntu 14.04LTS修改显示分辨率
- 【Boost】Interprocess - 共享内存、文件映射介绍
- 将TXT文件中的数据整理成sql数据库
- jenkins git can't work ERROR: Timeout after 10 minutes ERROR: Error fetching remote repo 'origin'
- Tomcat的生命周期管理
- 碰到的C语言的关于循环取数的方法
- Notifydatesetchanged的用法:
- BZOJ1008越狱
- [多线程] 生产者消费者模型的BOOST实现
- Linux下增加、删除Swap文件
- 通信之进程间通信-AIDL