急~~~怎么把TXT文件循环导入SQL数据库

xlj_2008 2010-11-12 09:14:37





管辖机构:1111111 报表编号:22222222
未收应还本息清单(按机构、柜员、楼盘)

机构:1111111 柜员:A123 楼盘:521001货币:001 核算码: 1234日期:2010-09-14页数: 1
--------------------------------------------------------------------------------------------------------------------------------
客户号客户名 房号 公司电话 住宅电话 手机 寻呼
通讯地址 拖欠罚息 拖欠总额 拖欠期数
贷款帐号 扣款帐号 旧帐号 利率 逾期利率
期号 应还款日期 应收金额(合计) 应收本金 应收利息 应收罚息 逾期天数
--------------------------------------------------------------------------------------------------------------------------------
12345678王菲 12345678 12345652 13210211412
北京北京新村 0.76 2,342.63 1
22222222222222222 333333333333333333 7777 0.00495000 0.00693000
7 2010-09-12 2,342.63 1,298.25 1,043.62 0.76 2
--------------------------------------------------------------------------------------------------------------------------------
客户小计: 0003 应收金额(合计) 8,575.17本金 4,442.85利息 4,101.34罚息 30.98
--------------------------------------------------------------------------------------------------------------------------------
核算码合计: 客户数: 00003应收金额: 8,575.17本金 4,442.85利息 4,101.34罚息 30.98
--------------------------------------------------------------------------------------------------------------------------------
打印日期2010/09/15





管辖机构:11111111 报表编号:22222222
未收应还本息清单(按机构、柜员、楼盘)

机构:1111111 柜员:A123 楼盘:621002货币:001 核算码: 2351日期:2010-09-14页数: 2
--------------------------------------------------------------------------------------------------------------------------------
客户号客户名 房号 公司电话 住宅电话 手机 寻呼
通讯地址 拖欠罚息 拖欠总额 拖欠期数
贷款帐号 扣款帐号 旧帐号 利率 逾期利率
期号 应还款日期 应收金额(合计) 应收本金 应收利息 应收罚息 逾期天数
--------------------------------------------------------------------------------------------------------------------------------
11567623谢红 01012345678 01021412541 12125212521
北京下关190-503 0.07 201.62 1
444444444444444444 555555555555555555 7777 0.00495000 0.00693000
7 2010-09-12 201.62 201.55 0.00 0.07 2
--------------------------------------------------------------------------------------------------------------------------------
客户小计: 0001 应收金额(合计) 201.62本金 201.55利息 0.00罚息 0.07
--------------------------------------------------------------------------------------------------------------------------------
核算码合计: 客户数: 00001应收金额: 201.62本金 201.55利息 0.00罚息 0.07
--------------------------------------------------------------------------------------------------------------------------------
打印日期2010/09/15









下面字段数据库有对应字段


客户号客户名 房号 公司电话 住宅电话 手机 寻呼
通讯地址 拖欠罚息 拖欠总额 拖欠期数
贷款帐号 扣款帐号 旧帐号 利率 逾期利率
期号 应还款日期 应收金额(合计) 应收本金 应收利息 应收罚息 逾期天数


...全文
1095 42 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-11-16
  • 打赏
  • 举报
回复
我做过类似的,有事CALL我, QQ364737386
xlj_2008 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 generhappy 的回复:]
得看你的txt是什么数据形式,
是每条数据都是占一行么?,看看哥的代码

C# code

FileStream fs = new FileStream(txtFilePath.Text, FileMode.Open);
StreamReader sr = new StreamReader(fs);
string str……
[/Quote]下面是我需要导入的字段和数据



客户号客户名 房号 公司电话 住宅电话 手机 寻呼
通讯地址 拖欠罚息 拖欠总额 拖欠期数
贷款帐号 扣款帐号 旧帐号 利率 逾期利率
期号 应还款日期 应收金额(合计) 应收本金 应收利息 应收罚息 逾期天数
--------------------------------------------------------------------------------------------------------------------------------
11567623谢红 01012345678 01021412541 12125212521
北京下关190-503 0.07 201.62 1
444444444444444444 555555555555555555 7777 0.00495000 0.00693000
7 2010-09-12 201.62 201.55 0.00 0.07 2
g_lbz 2010-11-16
  • 打赏
  • 举报
回复
楼主首先需要经你的文件进行格式化,可以通过程序,也可以手动(如果不怕麻烦的话)。
格式化后的数据可以仍然存储在文本中或者Excel文件中。

数据格式化是最为关键的步骤,格式话后倒入就简单了,可以直接通过数据库引擎导入。比如 选择数据库 右键->任务->导入数据库

或者直接通过程序将格式化的数据添加到数据库中
generhappy 2010-11-16
  • 打赏
  • 举报
回复
得看你的txt是什么数据形式,
是每条数据都是占一行么?,看看哥的代码

FileStream fs = new FileStream(txtFilePath.Text, FileMode.Open);
StreamReader sr = new StreamReader(fs);
string strCardNumber = sr.ReadToEnd();
string[] arrCardNumber = strCardNumber.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
if (bussiness.UploadTxt(arrCardNumber,((KeyValueMember)comboArea.SelectedItem).ValueMember))
{
dataGridView1.DataSource = bussiness.GetNewData(arrCardNumber.Length).Tables[0];

}


public bool UploadTxt(string[] arrCardNumber,string areaId)
{
try
{
for (int i = 0; i < arrCardNumber.Length; i++)
{
string sql = string.Format("INSERT INTO cards (CardNumber,GetDate,Area_ID) VALUES('{0}',#{1}#,{2})", arrCardNumber[i], DateTime.Now.ToLocalTime().ToString(),areaId);
if (!dataEntity.ExeSQL(sql))
return false;
}
return true;
}
catch (Exception ex)
{
return false;
throw ex;
}
}
xlj_2008 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 sunny_yu 的回复:]
写个程序导入吧,根据你的txt文字内容格式取出相应的数据插入数据库。
[/Quote]现在的问题就是这么提前撒 能否指点下?
sunny_yu 2010-11-16
  • 打赏
  • 举报
回复
写个程序导入吧,根据你的txt文字内容格式取出相应的数据插入数据库。
xlj_2008 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 gac520 的回复:]
TXT导入本身就是按行存取一条记录,中间用分隔符将字段分开的。
但是楼主的TXT文件格式还真的是没见过。是不是你发的有问题,看来自己OUTl 。
[/Quote]银行发下来的固定数据格式撒
zthsn 2010-11-16
  • 打赏
  • 举报
回复
给你个较完整的测试一下吧

前提在D盘下建一aa.txt文档里面输入几个数据 每个数据占用一行

create table test(num int not null)

insert into test select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Text;HDR=NO;DATABASE=D:\' ,aa#txt)

select * from test
delete test







select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Text;HDR=NO;DATABASE=D:\' --d:\是目录
,aa#txt) --aa#txt是文本文件名aa.txt
--*/
浪子-无悔 2010-11-16
  • 打赏
  • 举报
回复
TXT导入本身就是按行存取一条记录,中间用分隔符将字段分开的。
但是楼主的TXT文件格式还真的是没见过。是不是你发的有问题,看来自己OUTl 。
xlj_2008 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 g505149841 的回复:]
引用 34 楼 xlj_2008 的回复:
引用 32 楼 g505149841 的回复:
C# code

command.CommandText = "BULK INSERT test from 'c:\\de.txt' with (fieldterminator=',',rowterminator='\n',batchsize=10000)";


试试用BULK INSERT……
[/Quote]你说的这种是要调整TXT文件内容了,可我这有几千条甚至几万条数据撒?
xlj_2008 2010-11-15
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 g505149841 的回复:]
C# code

command.CommandText = "BULK INSERT test from 'c:\\de.txt' with (fieldterminator=',',rowterminator='\n',batchsize=10000)";


试试用BULK INSERT批量导入txt文件插入数据库,fieldterminator=','(导入字段间的分隔符为逗号……
[/Quote]请问有没有什么类似的案例 发来看看么
baysos 2010-11-15
  • 打赏
  • 举报
回复
处理一下,让它变成正则可处理~
g505149841 2010-11-15
  • 打赏
  • 举报
回复

command.CommandText = "BULK INSERT test from 'c:\\de.txt' with (fieldterminator=',',rowterminator='\n',batchsize=10000)";

试试用BULK INSERT批量导入txt文件插入数据库,fieldterminator=','(导入字段间的分隔符为逗号,可换)
g505149841 2010-11-15
  • 打赏
  • 举报
回复
上面代码中最后2句,是用来测试插入时间的,跟批量插入没关系,不用管
g505149841 2010-11-15
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 xlj_2008 的回复:]
引用 32 楼 g505149841 的回复:
C# code

command.CommandText = "BULK INSERT test from 'c:\\de.txt' with (fieldterminator=',',rowterminator='\n',batchsize=10000)";


试试用BULK INSERT批量导入txt文件插入数据库,fieldter……
[/Quote]

txt文件中放要插入数据库的值,每个值用逗号隔开(可设置)。batchsize=10000指每次批次执行多少插入语句。

string connectstr = "Data Source= ;Initial Catalog= ;Integrated Security=True";
SqlConnection conn = new SqlConnection(connectstr);
conn.Open();
SqlCommand command = new SqlCommand();
SqlTransaction mytran; //建事务
mytran = conn.BeginTransaction();
try
{
//从此开始,基于该连接的数据操作都被认为是事务的一部分
command.CommandTimeout = 0;
command.Connection = conn;
command.Transaction = mytran; //定位数据库
//command.ExecuteNonQuery();
command.CommandText = "BULK INSERT test from 'c:\\de.txt' with (fieldterminator=',',rowterminator='\n',batchsize=10000)";
//conn.Open();
command.ExecuteNonQuery();
mytran.Commit(); //提交事务
}
catch (Exception err)
{
throw new ApplicationException("事务操作出错,系统信息:" + err.Message);
}
finally
{
conn.Close();
}
TimeSpan ts = DateTime.Now - begin;
MessageBox.Show("ts=" + ts.TotalSeconds);
ysz89757 2010-11-12
  • 打赏
  • 举报
回复
如果格式固定,就用StreamReader.ReadLine读出来,写进数据库
xlj_2008 2010-11-12
  • 打赏
  • 举报
回复
没人能写点代码 点拨下么???
hxfnk 2010-11-12
  • 打赏
  • 举报
回复
我也没做过,学习了,谢谢dx
yufenghua 2010-11-12
  • 打赏
  • 举报
回复
额,循环试试看???没搞过
xx_lzj 2010-11-12
  • 打赏
  • 举报
回复
不难吧?
(1)用StreamReader.ReadLine将其读入string
(2)上一行IndexOf(" 逾期天数")>0 && 本行IndexOf(" -------------------------------------------------------------------------------------------------------------------------------- ")>0,则下一行开始直到下一个IndexOf(" -------------------------------------------------------------------------------------------------------------------------------- ")>0为真,其间为数据行。
(3)数据行以空格分隔,另客户号和客户名之间分隔规律为:客户号占8字符
加载更多回复(22)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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