急~~~怎么把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









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


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


...全文
1141 42 打赏 收藏 转发到动态 举报
写回复
用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)
内容概要:本文详细介绍了一种基于MATLAB实现的改进前推回代法,用于高效求解低压配电网的潮流计算问题。该方法针对传统前推回代法在处理放射状或弱环状配电网络时存在的收敛性差、计算效率低等缺陷,提出了多项优化策略,包括节点分层排序、支路编号优化以及合理的电压初始值设定,从而显著提升了算法的数值稳定性与运算速度。文中系统阐述了改进算法的数学模型构建过程与核心原理,并提供了完整的MATLAB代码实现流程。通过标准算例的仿真测试,验证了该改进方法在计算精度和收敛性能方面的优越性,可为低压配电网的规划、运行状态分析、电压调控及分布式电源接入能力评估等实际工程问题提供可靠的技术支撑。; 适合人群:具备电力系统分析基础知识和MATLAB编程能力的高校研究生、从事电力系统相关研究的科研人员,以及负责配电网规划、运行与优化的工程技术人员。; 使用场景及目标:①实现低压配电网的稳态潮流计算与仿真分析,获取各节点电压和支路功率分布;②支撑含分布式光伏、储能等设备接入的配电网承载力评估与电压越限风险分析;③用于研究电压调控策略、无功补偿配置等优化问题;④作为电力系统专业课程的教学案例,帮助学生深入理解潮流计算的基本原理与数值算法的编程实现。; 阅读建议:建议读者结合文中的理论推导与提供的MATLAB代码进行上机实践,重点关注节点分层逻辑和迭代收敛判据的编程实现细节,通过调试和修改算例参数来加深理解,并可尝试将该方法拓展应用于三相不平衡潮流或动态潮流计算等更复杂的场景。

62,271

社区成员

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

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

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

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