分享

Delphi中TXT文件 数据库

 quasiceo 2013-02-20

Delphi中TXT文件 数据库

我有一个aa.TXT文件,有内容:
   ______________________
     12850 001
     24545 424
     54784 211
     00000 000
     01252 455
     48573 784
现在我需要将他们变成Access数据表,字段为a01和a02,并且在DBGrid中显示为
   a01       a02
   ______________________
     12850 001
     24545 424
     54784 211
     00000 000
     01252 455
     48573 784

因为数据很大,如果我用那种读取文本文件的方法实在太慢了,我读100万时慢得令人无法相信,所以我想请问一下有没有办法能在几分钟内搞定的呢?

我看过
http://www./delphibbs/dispq.asp?lid=1691966
的解决方法,感觉很快,但问题是我提取到的只有一个字段,而没有将我的TXT文件分为两个字段显示,请问大有有好的办法帮我实现吗??我的TXT文件中前段与后段的分格符是一个Tab键。


你要在TXT文本文件的相同目录下建一个Schema.ini文件,其格式如下:
[文本文件.txt]
Format=Delimited( )
Format=FixedLength
ColNameHeader=true
col1=a01 Text width 5
col2=a02 Text width 3


你可以先用access导入文本文件,这样省点事

To:panlong
 我用你的办法实现了我的要求,但还有一个问题想请教一下。那就是有没有办法让数据导入到Access表的同时让其自动变成多个字段(字段数由用户设置)
   ______________________
     12850  001
     24545  424
     54784  211
     00000  000
     01252  455
     48573  784
 而到数据库时则是,也就是让数据按Z字型规律进入到数据库中
 a01   b01    a02    b02
 ------------------------
 12850  001   24545  424
 54784  211   00000  000
 01252  455   48573  784

 因为我发现如果在导入数据库后我再去做这些动作的话比原来的处理方法还要慢啊!!

To:刘gw
 不是我不想那样操作,而是这个数据库必需加有密码的,也就是不能让操作者能够打开这个数据库。并且在导入时还需要进一步做些加密处理。

还有一个办法是使用excel打开文本文件,选用固定分隔符分隔,excel会自动将不同字段分隔,然后再用access导入就ok

使用文本数据库,然后TBatchMove
28.6文本文件数据库表
   Delphi为在程序中访问文本文件数据库提供了有限的支持。这种数据库必须包含两个文件:一个
数据文件,其扩展名必须是TXT,另一个是概要(schema)文件,其扩展名为SCH,而且这两个文件的
名称必须相同(例如FOO.TxT和FOOSCH)。数据文件的长度应该是固定的,或者有分界符加以分隔。
而概要文件则提供了诸如字段名称、长度和类型等信息,以使BDE知道如何解释数据文件。
28.6.1概要文件
   概要文件的格式和windows的INI文件类似。分节的名称(S ection Name)就是数据库表的名称(去掉
扩展名)。表28一5列出了概要文件中用到的项及其可能的取值。

28.6.3使用文本数据库表
   使用TTable组件可以访问文本数据库表,方式与访问其他类型的数据库表相似。首先,要把DatabaseName属性设为一个包含数据文件(T xT)和概要文件(S cH)的别名或目录,再把TableType属性
设为ttAscll。现在,就可以在object Inspector中设置TabfeName属性来指定一个文本数据库表。再在
TDatasource组件与TDBGrid组件之间建立关联关系,这样,就可以从网格中看到每个字段的值,如图
28一21所示。
   注意如果所有的字段都挤在一列里,就可能是由于BDE无法正确读取概要文件。
28.6.4限制
   事实上,Borland并不倾向于使用文本数据库格式。由于文本文件所固有的局限,建议大家只在不
是从真实的数据库中输入或输出数据时,才使用文本数据库表。下面列出了使用文本数据库表时要注
意的限制:
   ·不支持索引。所以,TTabfe中要用到索引的方法都无法调用。
   ·不能使用TQuery组件来访问文本数据库表。
   ·不支持删除记录。
   ·不支持插入记录。插入的记录会被加到表的末尾。
   ·不支持引用完整性验证。
   ·不支持BLOB字段。
   ·不能编辑VARYING类型的数据库表。
   ·文本数据库总是以独占方式打开的。因此,只能在程序代码中打开文本数据库,而不能在设计
     期打开。
28.6.5从文本数据库表中引入数据
   正如前面所提到的,文本数据库表最好转换为实际的数据库格式。下面要做的就是利用
TBatchMove组件一步一步地把一个文本数据库表转换为一个Paradox表。假设窗体上包含两个TTabfe
组件和一个TBatchMove组件,其中代表文本数据库表的TTabfe组件为TextTbl,代表目标P盯adox表的
TTable组件为PooxTbl,TBatchMove组件名称为BM。操作步骤如下:
   l)将TextTbl与要引入的文本数据库表关联。
   2)把PDoxTbl的DatabaseName属性设为目标数据库的别名或目录,把TableName属性设为目标数28.6.5从文本数据库表中引入数据

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多