Indexing 删除FileMaker Pro表上的所有索引

Indexing 删除FileMaker Pro表上的所有索引,indexing,filemaker,Indexing,Filemaker,我们继承了一个包含500多个字段的表,几乎所有字段都被索引。我们正试图通过ODBC访问此表,但由于索引数量巨大,无法访问 我们正在寻找关于如何迭代所有字段的帮助,查看它是否被索引,如果被索引,则删除索引 我们已经跌跌撞撞了几个小时,没有取得任何进展,所以希望有人能帮助我们 我们欢迎有帮助的插件或其他解决方案,或者只是一些关于如何通过FileMaker Pro脚本实现的建议 提前谢谢你 本 PS我们使用的是适用于Windows的FileMaker Pro 17,以下是我们尝试过的: 我们尝试使用带

我们继承了一个包含500多个字段的表,几乎所有字段都被索引。我们正试图通过ODBC访问此表,但由于索引数量巨大,无法访问

我们正在寻找关于如何迭代所有字段的帮助,查看它是否被索引,如果被索引,则删除索引

我们已经跌跌撞撞了几个小时,没有取得任何进展,所以希望有人能帮助我们

我们欢迎有帮助的插件或其他解决方案,或者只是一些关于如何通过FileMaker Pro脚本实现的建议

提前谢谢你

PS我们使用的是适用于Windows的FileMaker Pro 17,以下是我们尝试过的: 我们尝试使用带DROP INDEX函数的Execute SQL,但似乎每个字段都需要它,每个字段都需要一条新的Execute SQL语句,这意味着超过500条语句。这也是一个问题,因为不是所有字段都有索引,所以没有抛出错误的字段似乎会停止脚本的运行

更新:多亏了@AndreasT,我才得以实现这一目标!我已将关键项目加粗

步骤 1.用我想要的字段创建一个视图 2.编写一个脚本(见下文)以获取字段的变量 3.在字段集上循环,使用计算SQL删除字段

别生气!再次感谢你,@AndreasT!你是一个金色的上帝

设置错误捕获[打开]
设置变量[$fieldlist;值:字段名(Get(FileName);“u BENTEST”)]
设置变量[$fieldcount;值:ValueCount($fieldlist)]
环
设置变量[$counter;值:$counter+1]
设置变量[$fieldname;值:GetValue($fieldlist;$counter)]
执行SQL[ODBC数据源:“FM_components”;计算SQL文本:“在components上放置索引。”&$fieldname]
[无对话]
如果[$counter=$fieldcount],则退出循环

结束循环

脚本引擎或计算引擎中没有影响数据库架构的功能。但是,当将数据库用作ODBC源时,可以从字段中创建或删除索引。您可以获得列(字段)名称的列表,并对这些名称进行迭代,然后对每个字段执行DROP INDEX语句

更多信息请参见本文件第22页:

编辑:您还可以尝试使用插件并在循环脚本的计算中运行它。这一条似乎支持DROP Index语句

可能还有其他插件也会这样做

编辑2: 像这样的事情应该可以解决问题,但是由于索引太多而无法通过ODBC访问文件的潜在问题似乎很奇怪,应该进行调查。文件可能已损坏,您可以尝试在恢复的版本上执行恢复和测试

下面是循环脚本的原理

创建一个新布局,并向其中添加所有需要的字段。从字段选择器拖放是一种简单的方法。可以按字段类型排序,如果需要,只能拖动文本和数字字段

In your script, Set error capture to On.
Set a varible $fieldlist to FieldNames ( Get(FileName );"Your new layout name").
Now you have your list of fields/columns.
Set a $fieldcount variable to count the fields ValueCount($fieldlist)
Set a $counter variable to 1
Start a loop
Get the first column name by setting a variable to GetValue($fieldlist;$counter)
Do the SQL to DROP INDEX on this column
Increment the $counter
Exit loop when $counter > $fieldcount
End loop

Sam在评论中所说的是正确的,因此在相关版面上禁用Quickfind,否则您可能会为该版面上的任何可索引字段返回索引。他是对的,没有办法阻止以编程方式创建新索引,只能手动创建。

Hi@AndreasT,谢谢您的回复!请参阅我上面对我们迄今为止尝试的内容的更新描述。我们也尝试安装myFMBUTLER,但无法确定如何安装。我只看到了如何将插件安装到表中的字段中,但我不明白这有什么帮助。我发现FileMaker相当混乱;-)插件安装在扩展文件夹中,该文件夹位于多个位置。通常,插件开发人员会在插件中包含一个数据库,用于为您安装插件。否则,请在web上搜索FileMaker插件位置并将插件复制到该位置。对于脚本,您应该获得字段列表,并在脚本中进行循环,以便为列表中的每个字段调用一次drop index语句。如果在此之前您对FileMaker了解不多,则这是一项高级任务。此外,如果您包括错误捕获步骤,脚本将在出现任何错误后继续执行。如果出现性能问题,请确保您使用的是官方ODBC驱动程序。