从.MDB字段名称中删除奇怪的字符



我有大量的.mdb文件(如Microsoft Access DB-Files中)。应该将第一个字段(或列)命名为MyField1。但是,这些文件已损坏,因此实际字段名称为 ufeffMyField1或换句话说, 0xFEFF已预先为实际字段名称。

我正在尝试使用pyodbc-command

将有关字段从ufeffMyField1复制到NewField
cursor.execute("UPDATE MyTable SET NewField=" + colname + ";")

其中colname是错误的字段名称(假设NewField已经存在)

使用

之类的东西,用pyodbc获取colname的值
rows = cur.columns(table='MyTable')
for row in rows:
   if("MyField1" in row.column_name):
      colname=row.column_name

执行UPDATE...命令产生驱动程序错误,即MaxLocksperfile MS Access参数太低,如下所述 - 超越 - 释放的大型Transacti。但是,我在程序中仅打开一个文件时,我增加了Maxlocksperfile参数,并使用了几个数量级,因此似乎不是实际问题。

请注意,如果没有问题,我可以在MS访问中打开文件并将其重命名为GUI中的字段。我还没有找到一种在GUI中查看该字段错误命名的方法,据推测,由于额外的位不符合常见的编码。

最后,这使我提出了我的问题:如何通过pyodbc-commands将原始字节传递?

或者,如果您还有其他方法可以解决删除额外字符的实际问题,请在评论中提出建议?(如清理字段名称中的所有非ASCII字符)

如果要使用dao,则非常简单。您可以修改以下代码,以通过所有数据库的文件夹查找和循环。

Sub Rename_First_Field()
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
    Set dbs = OpenDatabase("C:....SomeDB.mdb")
    For Each tdf In dbs.TableDefs           ' Spin thru all tables in this database
        Set fld = tdf.Fields(0)             ' Grab the first field
        Debug.Print tdf.Name & vbTab & "|" & vbTab & fld.Name
        fld.Name = "MyField1"               ' Rename to 'MyField1'
    Next tdf                                'Move to next table
    Set tdf = Nothing
    Set dbs = Nothing
End Sub

相关内容

  • 没有找到相关文章

最新更新