关于怎样读取文本文件到数据库

祥子123qaz 2010-05-26 03:21:37
这是一张yx.txt文本
0112 aa jj
0234 bb kk
0333 cc ii
0422 dd oo
0522 ff ll
0644 gg mm
0755 aa nn
0866 bb vv
我要读取后导入数据库表yy中
另xx.txt文本
1122 aa jj
8899 bb kk
其中第1列为ID列导入表中是主键如果表中有数据3条ID为1122,8899和3322 到入时 将txt中ID1122,8899覆盖数据库表中的数据怎么做...

求详细代码 谢谢
用.NET程序做

...全文
151 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Luohui109 2010-11-25
  • 打赏
  • 举报
回复
StreamReader sr = new StreamReader(@"d:\yx.txt");
string line = sr.ReadLine();
while (line!=null)
{
line = sr.ReadLine();
string[] lineCols = line.Split(new string[] { " " }, StringSplitOptions.None);
supelves 2010-05-27
  • 打赏
  • 举报
回复
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection();
//...
//连接数据库
//...

DbDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter("select * from yy", conn);
DataTable dtYy = new DataTable();
adapter.Fill(dtYy);


StreamReader sr = new StreamReader(@"d:\yx.txt");
string line = sr.ReadLine();
while (line!=null)
{
line = sr.ReadLine();
string[] lineCols = line.Split(new string[] { " " }, StringSplitOptions.None);

DataRow[] dtRows = dtYy.Select("id=" + lineCols[0]);
if (dtRows.Length > 0)
{
dtRows[0]["column2"] = lineCols[1];
dtRows[0]["column3"] = lineCols[2];
}
else
{
DataRow dr = dtYy.NewRow();
dr["id"] = lineCols[0];
dr["column2"] = lineCols[1];
dr["column3"] = lineCols[2];
dtYy.Rows.Add(dr);
}

adapter.Update(dtYy);
}
祥子123qaz 2010-05-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 deknight 的回复:]
sorry,脑子有点热...

FileStream ifs = new FileStream("c:\\a.txt", FileMode.Open);//打开数据文件
StreamReader sr = new StreamReader(ifs);
int fileCount = 0;
while (sr.Peek() > -1)//StreamReader.Peek(……
[/Quote]
这个好像读出来的信息是 第2行 第4行 第6行.....
小黑哥gs 2010-05-26
  • 打赏
  • 举报
回复
学习来着。。庆祝我升星
deknight 2010-05-26
  • 打赏
  • 举报
回复
sorry,脑子有点热...

FileStream ifs = new FileStream("c:\\a.txt", FileMode.Open);//打开数据文件
StreamReader sr = new StreamReader(ifs);
int fileCount = 0;
while (sr.Peek() > -1)//StreamReader.Peek()返回下一个可用字符,但不使用它
{
Console.WriteLine(sr.ReadLine());
fileCount++;
}
sr.Close();

这样
祥子123qaz 2010-05-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xk1126 的回复:]
用文件流吧!~、
[/Quote]


给个例子被
祥子123qaz 2010-05-26
  • 打赏
  • 举报
回复
这个好象是最后一行吧???

我怎么读出来的只有最后一行信息
xk1126 2010-05-26
  • 打赏
  • 举报
回复
用文件流吧!~、
leon9090 2010-05-26
  • 打赏
  • 举报
回复
进来学习!~
deknight 2010-05-26
  • 打赏
  • 举报
回复
FileStream ifs = new FileStream("c:\\a.txt", FileMode.Open);//打开数据文件
StreamReader sr = new StreamReader(ifs);
while (sr.ReadLine() != null)
{
//这就是一行行的读
}
祥子123qaz 2010-05-26
  • 打赏
  • 举报
回复
我会你说的那种 我还合计有没有别的么 法子不怕多么````


第2个真不会 不会1行1行读 给我详细代码被
deknight 2010-05-26
  • 打赏
  • 举报
回复
会你还问...
第2个问题一样啊,一行一行的读数据,第一列为ID,先判断ID是否存在,不存在就insert否则update
祥子123qaz 2010-05-26
  • 打赏
  • 举报
回复
嗯 第一个这样写我也会 但是第2个怎么写啊 帮我想想被!!!!
还有那个txt数据之间不是空格 是Tab键
浮生若梦丶 2010-05-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 deknight 的回复:]
第一个问题是txt导入库:

C# code

public void ExecSQL()
{
string fPath = "c:\\aaa.txt";//获得要导入的文本文件
string constr = xxxxxxxxxxxx;
t……
[/Quote]
百度:asp.net 文本数据导入数据库
deknight 2010-05-26
  • 打赏
  • 举报
回复
第一个问题是txt导入库:

public void ExecSQL()
{
string fPath = "c:\\aaa.txt";//获得要导入的文本文件
string constr = xxxxxxxxxxxx;
try
{
using (SqlConnection conn = new SqlConnection(constr))
{
conn.Open();
SqlCommand com = new SqlCommand("BULK INSERT mytab.dbo.b FROM '" + fPath + "' WITH (FIELDTERMINATOR = ' ',ROWTERMINATOR= '\n')", conn);
//其中的FIELDTERMINATOR=' '指明字段间所使用的分隔符为空格
//其中ROWTERMINATOR= '\n'指明记录间所使用的分隔符为回车
com.ExecuteNonQuery();
MessageBox.Show("数据导入成功!");
conn.Close();
}
}
catch(Exception exp)
{
MessageBox.Show(exp.ToString());
}
}

第2个你变下思路改改就行了
deknight 2010-05-26
  • 打赏
  • 举报
回复
帮你找找,以前写过一个

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧