使用 Delphi 将文本文件加载到 MS ACCESS TABLE

Posted

技术标签:

【中文标题】使用 Delphi 将文本文件加载到 MS ACCESS TABLE【英文标题】:Loading text file into MS ACCESS TABLE using Delphi 【发布时间】:2011-10-21 00:52:36 【问题描述】:

我在尝试使用 Delphi 将制表符分隔的文本文件加载到 MS ACCESS 数据库表中时遇到一些问题。

到目前为止,我已经能够创建一个新的 Access 数据库和表,但是当我尝试在其中加载数据时,我得到一个带有消息的 EOLeException:

'INSERT INTO 语句包含以下未知字段名称:'FIELD1_FIELD2_FIELD3_...'

我的代码如下:

cs := 'insert into TABLENAME(FIELD1, FIELD2, FIELD3, FIELD4, FIELD5, FIELD6, FIELD7,      FIELD8, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15) select * from [FILENAME.txt] in "' + EditJobLocation.Text + '"  "Text;HDR=Yes"';
ADOCommand2.CommandText := cs;
try
   ADOCommand2.Execute;
etc...

不确定是什么问题,但我认为这与“选择 *”部分将所有字段作为一个下划线分隔的字符串返回有关。

我一直在谷歌搜索试图找到一些答案,但还没有找到任何答案。

任何帮助将不胜感激。

【问题讨论】:

如果“select *”似乎是问题所在,那么显而易见的问题是:您是否已经尝试过“select field1, field2, ...”? 如果不查看 FILENAME.txt 的内容,前 2-3 行将很难提供帮助。 【参考方案1】:

建议:尝试删除 insert 部分,只留下 select * from... 部分,例如

cs := 'select * from [FILENAME.txt] in "' + EditJobLocation.Text + '"  "Text;HDR=Yes"';

使用此修改后的 SQL 语句打开记录集对象。如果成功,请检查记录集的 Fields 集合:即返回了多少列、它们的名称、它们的序号位置等。

希望这将确定问题是从文本文件中获取数据还是与插入操作有关。

附言如果您还没有;请考虑使用 schema.ini 文件来更好地控制 Access 如何根据列及其数据类型“查看”文本文件的数据。

【讨论】:

以上是关于使用 Delphi 将文本文件加载到 MS ACCESS TABLE的主要内容,如果未能解决你的问题,请参考以下文章

将 Delphi BDE Paradox *.db 查询结果导出到文本文件?

Delphi 有时会将文本格式文件 (DFM) 恢复为二进制格式吗?

delphi将文本输入到txt文件里面

DELPHI 如何打开和 保存 TREEVIEW 的状态

delphi 读取xml

Delphi 加载UTF8编码文件(XE适用)