+ -
当前位置:首页 → 问答吧 → 如何把.txt里的数据读到数据库的表里

如何把.txt里的数据读到数据库的表里

时间:2011-12-27

来源:互联网

现在又.txt的文件,里面有 两列数据(每行有许多行),全是数字的 怎么把它读到数据库的表里,两行数据对应两个字段,最好不要导到excel里了,那样有点麻烦,求各位大牛帮忙!!

作者: skyxuyan   发布时间: 2011-12-27

HDR=YES 的时候,第一行被认为是字段名  
  HDR=NO 的时候,第一行被认为是数据  
   
  select * from  
  OPENROWSET('MICROSOFT.JET.OLEDB.4.0'  
  ,'Text;HDR=NO;DATABASE=C:\' --c:\是目录  
  ,Surveys#txt)--aa#txt是文本文件名aa.txt

作者: SQL77   发布时间: 2011-12-27

一楼的做法我没用过,我一般的做法是,写一个程序,把txt文本一行一行读取,逐条插入数据库
  重要的一点是,你要让你的txt文本里面的数据有规律可循

作者: linagxiaojing   发布时间: 2011-12-27

SQL code
/** 导入文本文件 */
EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -Ppassword' 

/** 导出文本文件 */
EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -Ppassword'EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword' 

/**导出到TXT文本,用逗号分开*/ 
exec master..xp_cmdshell 'bcp "库名..表名" out "d:\tt.txt" -c -t ,-U sa -P password' 


BULK INSERT 库名..表名 
FROM 'c:\test.txt' 
WITH ( 
FIELDTERMINATOR = ';', 
ROWTERMINATOR = '\n' 
) 

作者: fredrickhu   发布时间: 2011-12-27

引用 3 楼 fredrickhu 的回复:
SQL code

/** 导入文本文件 */
EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -Ppassword'


mark

作者: ju523756055   发布时间: 2011-12-27

引用 3 楼 fredrickhu 的回复:
SQL code

/** 导入文本文件 */
EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -Ppassword'

/** 导出文本文件 */
EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.tx……


有没有程序实现的啊 

大家看下 这段代码哪错了

 private void button1_Click(object sender, EventArgs e)
  {
  SqlConnection conn = new SqlConnection ("server=localhost;database=Chartimages;uid=sa;pwd=1234");
  SqlTransaction tran = null;
  try
  {
  //把TXT文本转换为datatable
  string sql = string.Format("select * from [Text;Database={0}].{1}", "D:\\shuju.txt", "shuju.txt");
  DataTable dt = new DataTable();
  SqlDataAdapter sda = new SqlDataAdapter (sql, conn);
  sda.Fill(dt);
  if (dt == null)
  {
  MessageBox.Show("您导入的文档名字有误!请去掉空格或特殊字符!");
  return;
  }

  //去掉空行
  for (int i = 0; i < dt.Rows.Count; i++)
  {
  if (dt.Rows[i][0].ToString().Trim() == string.Empty)
  {
  dt.Rows.Remove(dt.Rows[i--]);
  }
  }
  //事务开始
  tran = conn.BeginTransaction();
  SqlCommand cmd = conn.CreateCommand();
  cmd.Transaction = tran;
  for (int i = 0; i < dt.Rows.Count; i++)
  {
  string[] str=dt.Rows[i][0].ToString().Split (' ');//用空格区分你的三列
   
  string sql_insert = string.Format("insert into shuju (data1,data2) values ('{0}','{1}')", str[0],str[1]);
  cmd.CommandText = sql_insert;
  cmd.ExecuteNonQuery();
  }
  tran.Commit();
  MessageBox.Show("导入成功!");
  }
   

   
  catch
  {
  MessageBox.Show("导入失败!");
  //tran.Rollback();
  }
  finally
  {
  conn.Dispose();
  }

  }

作者: skyxuyan   发布时间: 2011-12-27

1。如果是几个文件,不需要一定用程序来做,可以用sqlserer里面的导出数据完成。不过格式需要手动改成只有纯数据的内容,数据格一定一样的,这个用起来很方便,前提是数据表要存在。
2.把txt数据读取到缓存中,C#中可以利用OLEDBAdapter 对象。然后对象.upata(缓存表)到数据库,前提是要把缓存表的数据格式好,数据表也要存在

作者: ly576107712   发布时间: 2011-12-27