我试图从csv中读取数据行,并将它们作为记录附加到现有的Visual FoxPro dbf中。现有的Visual FoxPro dbf有许多长度超过10个字符的字段,但这在使用模块dbf或dbfpy时会导致错误。
以下是表结构简化版的示例:
import dbf
table=dbf.from_csv('seasdate.csv',field_names="zone_num season_code",dbf_type='Vfp')
#table to write to
table2=('temptable','zone_num C(2); season_code C(1)',dbf_type='Vfp')
for datum in table:
table2.append(datum)
返回:' dbf.ver_2.FieldSpecError:最大字段名称长度为10.' season_code'是11个字符。'
我知道在Vfp表中可能有一个大于10个字符长的字段名称,因为正如我所提到的,我最终将附加的表已经存在。任何帮助是极大的赞赏!
答案 0 :(得分:1)
我没有使用dbfpy但是看一下这种语法,看起来你正在创建新的" free"表。免费桌子' fieldNames的长度限制为10。
你可能应该在那里查看www.leafe.com和Dabo Framework。 Ed Leafe来自VFP社区,他非常了解VFP数据库格式。
答案 1 :(得分:0)
作为解决方法,存储在.dbf
文件中的字段名称只有10个字符 - 前10个字符,因为它发生(我不确定前10个字符是否必须唯一,或者VFP如何处理它。)因此,如果您的字段名称在前10个中都是唯一的,那么只需使用截断的名称:
table2=('temptable','zone_num C(2); season_cod C(1)',dbf_type='Vfp')
目前dbf不支持长字段名称。如果你想给我一个带有长字段名称的样本VFP .dbc
,我很乐意考虑添加这些支持。