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









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


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


...全文
1142 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)
源码直接下载地址: https://pan.quark.cn/s/1c143f32ee83 华为作为全球领先的通信设备供应商,其产品系列广泛涉及各类网络设备,其中包括我们接下来要探讨的上网卡产品。华为上网卡驱动程序是一种专门为华为品牌旗下多种型号上网卡开发的软件模块,其主要功能在于保障这些设备与计算机操作系统的无缝对接。涉及的型号涵盖EC8189、EC226、EC169C、EC360、EC1260、EC1261、EC189、EC122、EC150以及EC168,这些均是由华为公司推出的移动宽带调制解调器,旨在通过移动网络实现便捷的互联网接入服务。驱动程序在计算机系统中的地位举足轻重,它充当了硬件设备与操作系统之间的媒介,负责对硬件设备发出的指令进行解读和执行,并将操作系统的指令传递给硬件设备。华为上网卡驱动程序的及时更新和精准安装是保障设备稳定运作和性能达到最优的关键因素。"天翼宽带安装程序V1.3.3.exe"是由中国电信提供的一个整合性软件包,内含华为上网卡的驱动程序及配套的管理工具。用户可借助此安装程序来执行华为上网卡的相关驱动安装及更新,同步享受中国电信的3G或4G网络服务。版本标识V1.3.3代表软件经过迭代优化,通常包含了对错误的修正、性能的改善以及新功能的引入。 "SetupInfo.xml"作为安装程序的配置文档,其中收录了安装流程中的各项设定和元数据信息,例如安装流程、文件定位、依赖条件等。它是安装程序在执行时参照和遵循的纲领,旨在确保安装流程按既定方案进行。文件名"CT_HW_EVDO_Driver"或许指向华为的EVDO(Evolution-Data Optimized)驱动程序,EVDO是一种3G无线通信规范,具备高速数据传输的特性。该驱动可...
内容概要:本文围绕【博士论文复现】基于小信号扫频辨识的光伏并网逆变器正负序交互稳定性分析展开,结合Matlab代码与Simulink仿真实现,系统研究了光伏并网逆变器在弱电网环境下的正负序阻抗建模与交互稳定性问题。重点采用小信号扫频法进行系统辨识,获取逆变器的正负序阻抗特性,并通过奈奎斯特稳定判据等方法分析其在不同电网强度下的稳定性表现。文中详细阐述了扫频激励信号的设计原理、频域响应数据的提取与处理流程、阻抗模型的拟合与验证方法等关键技术环节,实现了对逆变器在复杂电网条件下动态交互行为的精确刻画。该研究不仅深入揭示了新能源并网系统中潜在的宽频振荡机理,也为提升系统稳定性、优化控制器设计提供了坚实的理论依据和有效的技术手段。; 适合人群:具备电力电子、自动控制及电力系统基础知识,从事新能源并网、电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握基于小信号扫频法的电力电子装置阻抗建模方法;② 深入理解光伏并网逆变器在弱电网下的正负序交互稳定性机理;③ 学习并复现高水平博士论文中的核心仿真技术,提升科研实践能力;④ 为实际工程中新能源并网系统的稳定性分析、振荡问题诊断与控制器优化设计提供理论支持和技术参考。; 阅读建议:学习者应结合提供的Matlab代码与Simulink模型,深入理解扫频辨识的原理与实现步骤,重点关注锁相环、电流控制环等关键模块对系统阻抗特性的影响,并尝试改变系统参数以观察稳定性变化,从而加深对理论知识的掌握。

62,271

社区成员

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

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

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

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