社区
数据库及相关技术
帖子详情
用c++Builder如何将txt文件中的数据(只有一列20万条记录)一次导入数据库 中
爱吃饼干的熊猫
2008-09-04 01:25:10
用c++Builder如何将txt文件中的数据(只有一列20万条记录)一次导入数据库 中 详细点。。。。谢谢
...全文
899
32
打赏
收藏
用c++Builder如何将txt文件中的数据(只有一列20万条记录)一次导入数据库 中
用c++Builder如何将txt文件中的数据(只有一列20万条记录)一次导入数据库 中 详细点。。。。谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
32 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Jim@luckeeinc.com
2008-10-31
打赏
举报
回复
更正 以上方法 在Sql Server中似乎不能跑
在mySql裏是可以這樣寫的 把多句合併成一句
insert into table(field) values(value1)
insert into table(field) values(value2)
insert into table(field) values(value3)
insert into table(field) values(value4)
insert into table(field) values(value5)
合併成
insert into table(field) values(value1),(value2),(value3),(value4),(value5)
Jim@luckeeinc.com
2008-10-31
打赏
举报
回复
插入數據庫有個能提高效率的寫法
insert into table(field1,field2) values(value1, value2) values(value3,value4) values(value5,value6)....
現在程序裏把所有的value拼在一起 然後一起insert
這中間省去了很多時間 試一下看看
爱吃饼干的熊猫
2008-10-31
打赏
举报
回复
谢谢该结贴了
路过路人乙
2008-09-08
打赏
举报
回复
呃...僵哥说的很详细恶劣
勉励前行
2008-09-08
打赏
举报
回复
To unsigned :
在使用事務的情況下,我的實測結果是DBX比ADO快不少。
沒測試過不用事務的情況。(DBX4 + MSSQL)
(測試時,第一次遞交數據因為服務器要擴張表空間,這時間太多因素影響,所以要忽略。每次測試前清空表再插入數據。)
以下是偽代碼:
StartTransaction
delete table
for(int i = 0 ; i < 10*1000*1000 ++i)
Execute(SQL,...);
Commit
同樣過程,DBX優於ADO即:
SQLConnection->ExecuteDirect(SQL);
優於
ADOConnection->Execute(SQL,
cmdTex,TExecuteOptions() << eoExecuteNoRecords); //可能是我選擇的參數不對。沒測試其他參數。
不清楚DBX4的MSSQL驅動是什麼方式與MSSQL交互的?
僵哥
2008-09-08
打赏
举报
回复
晕,又打错...
僵哥
2008-09-08
打赏
举报
回复
[Quote=引用 21 楼 whomin 的回复:]
如果是mssql,用bulk insert肯定是最快的,应该不会不行的啊,你试试建个文本文档到d盘下的0.txt,里面输入几行字符,然后执行:
BULK INSERT test from 'e:\0.txt' WITH (FIRSTROW=1,ROWTERMINATOR = '\n');
(test表只有一列varchar类型)
你那个提示找不到txt文件应该是路径没写对
[/Quote]
1.buld insert如果没有记错的话,文件需要在数据库的本地磁盘;
2.输出到文件也是需要消耗时间的.
whomin
2008-09-08
打赏
举报
回复
如果是mssql,用bulk insert肯定是最快的,应该不会不行的啊,你试试建个文本文档到d盘下的0.txt,里面输入几行字符,然后执行:
BULK INSERT test from 'e:\0.txt' WITH (FIRSTROW=1,ROWTERMINATOR = '\n');
(test表只有一列varchar类型)
你那个提示找不到txt文件应该是路径没写对
xjq2003
2008-09-08
打赏
举报
回复
见识
lizhoulun
2008-09-08
打赏
举报
回复
不知道文本数据需要加工不?是不是规则的。
可以考虑如下方式:
给DTS包传递参数,支持的参数包括(环境变量、注册表值和参数字符)判断后,导入数据。用VBScript、JScript 编程,完成数据的判断和转换任务。
速度比较快。
whomin
2008-09-08
打赏
举报
回复
如果是远程共享的文件夹,用bulk insert并无问题,我已进行了测试,是可以的:
BULK INSERT test from '\\192.168.0.1\Share\0.txt' WITH (FIRSTROW=1,ROWTERMINATOR = '\n');
爱吃饼干的熊猫
2008-09-08
打赏
举报
回复
[Quote=引用 22 楼 unsigned 的回复:]
引用 21 楼 whomin 的回复:
如果是mssql,用bulk insert肯定是最快的,应该不会不行的啊,你试试建个文本文档到d盘下的0.txt,里面输入几行字符,然后执行:
BULK INSERT test from 'e:\0.txt' WITH (FIRSTROW=1,ROWTERMINATOR = '\n');
(test表只有一列varchar类型)
你那个提示找不到txt文件应该是路径没写对
1.buld insert如果没有记错的话,文件需要在数据库的本地磁盘;
2.输出到文件也是需要消耗时间的.
[/Quote]
对 用 buld insert 只有在本地磁盘 上可以操作
关键是 要解决 远程操作的问题 用的是 ms sql
僵哥
2008-09-07
打赏
举报
回复
[Quote=引用 18 楼 dxkh 的回复:]
MySQL有专门的读取语句,可以把文本文件中的数据读入数据库,比用insert快太多了
[/Quote]
MSSQL也有类似的,关键看源数据的格式等等.为什么你会觉得比使用insert快,只是因为很多细节由数据库系统内部进行控制和优化过了.类似的数据库系统,内部仍然还是一条条insert.
僵哥
2008-09-07
打赏
举报
回复
[Quote=引用 11 楼 changjuanfang 的回复:]
僵哥的测试二 是在理想状态下的测试(只有单纯的插入数据) 现实中数据的获取也要花费相当的时间 这样 总时间就会很长 如果获取数据的方式不对 会耗费大量的cpu时间片 这样会大大影响数据的插入
[/Quote]
需要获取数据,那是获取数据所消耗的时间,我所说的只是让数据库操作的时间尽可能少.
其实PPower说的使用DBX的TSQLConnection会比ADO操作快,这一点个人并不赞同.我没有做过实际的测试,所以无法下最终的结论.但是从理论上来讲,DBX也是需要通过ADO操作的,所以它的快只在于连接池的使用.对于单线程的程序来讲,可能在表面上看是会有所提升,但是这个并不能说明实质性的问题.
[Quote=引用 17 楼 changjuanfang 的回复:]
用事务 估计慢
[/Quote]
对于这种操作,个人建议是使用显示的事务,即强制每一批提交一个事务.对于支持事务的DBMS,并不会因为你没有显示使用事务,它就不会使用事务.只是这个事务是由DBMS自己去控制.
爱吃饼干的熊猫
2008-09-06
打赏
举报
回复
用事务 估计慢
爱吃饼干的熊猫
2008-09-06
打赏
举报
回复
[Quote=引用 12 楼 liu1jian2 的回复:]
先將Txt文件轉爲Excel格式文件,然後將Excel導入數據庫。
[/Quote]
具体点
爱吃饼干的熊猫
2008-09-06
打赏
举报
回复
先谢了 我先试试!!
勉励前行
2008-09-06
打赏
举报
回复
"测试二"使用ADOComand遞交數據, 比使用DBX的TSQLConnection慢.
String SQL ;
TSQLConnection *SQLConn;
//---------------
DWORD StartAt=GetTickCount();
SQLConn->StartTransaction(TransactionDesc);
try{
for(int i = 0 ; i< 10*1000*1000; ++i) { //共提交10M次
SQL.Clear();
for(int i = 0 ; i < 10 ; ++i) //每次插入 10 行
SQL += "insert into TableA(Field0) Values('test data')\n";
SQLConnection->ExecuteDirect(SQL);
}
SQLConn->Commit(TransactionDesc);
}
catch(Exception &E){
SQLConn->Rollback(TransactionDesc);
throw Exception(E.Message);
}
catch(...){
SQLConn->Rollback(TransactionDesc);
throw Exception(String("unknow error"));
}
DWORD EndTime=GetTickCount();
ShowMessage((int)(EndTime-StartTime));
改用TSQLConnection ,使用 並將 iCacheSize= 10 ~ 100 ; 速度估計至少提升 10% .
勉励前行
2008-09-06
打赏
举报
回复
BULK Insert
TXT 文件要上傳致到 SQL Server 服務器上。不要放在客戶端上。
僵哥写的 测试二 速度應該還是很快的。
BULK Insert 方案,因為要生成TXT文件並將文件上傳至服務器中,完成速度與"测试二"相比要看網絡情況與記錄數多少,一般情況下BULK Insert方案總體快些。"测试二"則為標准SQL語法,比BULK Insert 或(Insert into + OpenRowSet方式)通用。
先將Txt文件轉爲Excel格式文件,然後將Excel導入數據庫。這樣不如直接導入TXT文本。
liu1jian2
2008-09-06
打赏
举报
回复
先將Txt文件轉爲Excel格式文件,然後將Excel導入數據庫。
加载更多回复(12)
CNVCL for XE6 开发利器:高效构建Delphi/
C++Builder
应用
CNVCL(Custom Native VCL)是专为Embarcadero RAD Studio平台打造的高性能可视化组件库,深度兼容Delphi与
C++Builder
,聚焦于解决传统VCL在现代UI开发
中
的瓶颈。相较于原生VCL控件,CNVCL通过底层GDI+双缓冲绘制消息循环优化和轻量化对象模型,显著提升渲染效率并消除界面闪烁问题。其核心优势体现在三方面:1.高DPI自适应:内置DPI感知机制,自动缩放字体与图形资源,确保4K屏下显示清晰;2.
ASP.NET实现Excel
数据
导入
Access
数据
库
完整方案
在
中
小型Web应用开发
中
,ASP.NET常面临与本地
文件
型
数据
库
(如Access)交互的需求,尤其适用于
数据
采集、报表
导入
等轻量级
数据
处理场景。
高效批量附加SQL Server
数据
库
工具实战应用
在企业级
数据
库
运维
中
,SQL Server
数据
库
的迁移、恢复与部署是一项高频且关键的任务。传统的单个
数据
库
手动附加方式效率低下,难以满足大规模环境下的操作需求。为此,“批量附加
数据
库
工具”应运而生,作为专为提升
数据
库
附加效率而设计的自动化解决方案,它能够同时处理多个.mdf
文件
并自动完成
数据
库
注册与配置。该工具通过模块化架构设计,集成
文件
扫描、元
数据
解析、并发控制与错误恢复等核心功能,显著降低人为干预风险。其运行机制采用低侵入性资源调度策略,在保障系统稳定的同时实现高效吞吐。
用C++做
数据
分析 - 唐代诗人的朋友圈
通过分析全唐诗
中
各位诗人之间的“引用”关系,可以描绘出当时诗坛的大致朋友圈图景:谁跟谁熟?谁是圈子里的带头大哥?全唐诗有4万多首,人工一首一首地筛查费时费力,这种重复的统计性质的工作正是计算机最擅长的。
专升本第八讲 (
数据
库
与Access)
一、
数据
库
发展历程 1、人工管理阶段 简单讲就是程序员自己管理
数据
阶段,
数据
不能共享、冗余很大。 2、
文件
系统阶段 将
数据
用
文件
形式储存起来,多个程序可以简单共享,
文件
的管理由操作系统管理。 3、
数据
库
系统阶段 为解决
数据
的独立性,达到共享,
数据
库
技术应运而生。
数据
库
有一下特点: (1)采用
数据
模型,减小冗余 (2)最低...
数据库及相关技术
1,178
社区成员
18,938
社区内容
发帖
与我相关
我的任务
数据库及相关技术
C++ Builder 数据库及相关技术
复制链接
扫一扫
分享
社区描述
C++ Builder 数据库及相关技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章