使用 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 查询结果导出到文本文件?