怎样用TBatchMove导入文本文件数据?(90分)

  • 主题发起人 主题发起人 诸葛不才
  • 开始时间 开始时间

诸葛不才

Unregistered / Unconfirmed
GUEST, unregistred user!
在VFP中可以用Addpend from * sdf 来导入一个文本数据,数据的字段自动以表中的字段长
度导入,但在delphi中如何用,好像会把文本中的数据拦截,如文本文件中一行有12个字符,但
如果用TBatchMove就会加到pardox表的第一个字段,而且大于第一个字段就会被截掉

告急!!!
 
我刚做了一个,手动导入,先读再加入
 
要先制作一个格式文件(chm),然后配合TBatchMove使用才能导入文本文件。
 
1. 概要文件 *.sch的格式与INI文件类似. SECTION NAME就是数据库表的名称(去掉
扩展名). 该文件名必须与文本文件名相同(例如: AA.TXT和AA.SCH)

概要文件中的项及取值

项 可能的值 含义

FILETYPE VARYING 文件中的每一个字段都可能占用可变长度的空间.
字段之间用一个特殊字符隔开, 字符串之间也用一个
特定的字符隔开
FIXED 每个字段都根据从行首开始的特定的偏移量定位

CHARSET (多种) 指定使用哪种语言驱动程序,通常用ASCII

DELIMITER (任何字符) 指定一个字符用来分隔CHAR类型的字段, 仅适用
于VARYING类型的数据库表

SEPARATOR (任何字符) 指定一个字符用来分隔字段, 仅适用于VARYING类
型的数据库表


字段的定义
FieldX = Field Name, Field Type, Size, Decimal Place, Offset

X 代表字段编号, 从1 到字段总数
Field Name 字段名, 不要有引号或字符串分隔符
Field Type 字段类型 可为
CHAR、BOOL、DATE、FLOAT、LONGINT、NUMBER、TIME、TIMESTAMP
Size 字段长度(字符数),对数值型必须小于20
Decimal Place 只对FLOAT,指定小数点位置
Offset 只对FIXED 类型的表有效,指定某个字段的起始位置


举例如下:
AAA.txt 的概要文件 AAA.sch

=====================================================
FIXED 类型的表
[AAA]
FILETYPE = FIXED
CHARSET = ASCII
Field1 = EmpNo,Longint,04,00,00
Field2 = Name,Char,16,00,05
Field3 = OfficeNo,Char,05,00,21
Field4 = Height,Float,05,02,32

对应的AAA.TXT如下

1023 Stocke Tasd C2121 6.5
2133 Jack liu C0032 2.3
1345 joke fan E2415 1.2
4566 j.k F4567 5.4



======================================================
VARYING 类型的表
[AAA]
FILETYPE = VARYING
CHARSET = ASCII
DELIMITER = "
SEPARATOR = ,
Field1 = EmpNo,Longint,04,00,00
Field2 = Name,Char,16,00,00
Field3 = OfficeNo,Char,05,00,21
Field4 = Height,Float,05,02,00

对应的AAA.TXT如下

1023,"Stocke Tasd","C2121", 6.5
2133,"Jack liu","C0032",2.3
1345,"joke fan","E2415",1.2
4566,"j.k","F4567",5.4



2. 导入
假设FORM中有两个TTABLE和一个TBATCHMOVE, 代表文本数据库的TTable为 TextTbl
代表PARADOX的表为PDoxTbl, TBatchMove名为BM, 步骤如下:
1)将TextTbl与要引入的文本数据库表关联
2)把PDoxTbl 的DatabaseName设为目标数据的别名或目录, TableName为目标表名称
TableType为ttParadox
3)BM的Source设为TextTbl, Destination设为PDoxTbl, Mode设为batCopy
4)鼠标右键点BM, 选Excute即可

3. Finished!
 
Delphi/BCB自己带了一个读Txt数据到数据表的控件,只是没有安装,作为Dome放在其
Demos/DB目录下,自已找找吧!

希望对你有用!
 
至于嘛!文本数据是不是格式文本?如果是,定义一个TEXT Driver 的ODBC数据源,
然后用普通的控件不就可以了!
 
用ODBC连接文本文件即可
 
接受答案了.
 
后退
顶部