gpt4 book ai didi

mysql - linux:使用 bash 工具从表中删除全文

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:05:32 24 4
gpt4 key购买 nike

如何使用 bash 工具从 sql 文件中删除全文?

我需要克隆 myisam 表并将其转换为 INNODB,因此我无法使用

DROP FULLTEXT INDEX ON table_name

我尝试过的

sed -i 's@FULLTEXT.*.)@@g' post.sql

最佳答案

至少出于三个原因,这很难实现自动化:

CREATE TABLE `foo` (
`c` TEXT,
FULLTEXT KEY `c` (`c`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  • 删除 FULLTEXT KEY 行还需要删除前一行末尾的逗号。或者用其他行替换 FULLTEXT KEY 行。

  • 字符串“FULLTEXT KEY”可能会出现在您的 SQL 脚本中的其他地方、字符串文字或注释中。因此,您必须小心误报匹配。

  • 我们可以简单地将“FULLTEXT KEY”更改为“KEY”,但在长 VARCHAR 或 TEXT 列上声明全文索引相当常见,这对于传统索引的 1000 字节限制来说太长了.您可以使用索引前缀,但在正则表达式中选择前缀长度和处理多列索引很困难。

我会通过在创建 SQL 脚本之前删除所有 FULLTEXT 索引来解决这个问题。您可以查询所有 FULLTEXT 索引并从信息架构中生成删除语句。
例如:

SELECT CONCAT('ALTER TABLE `', table_schema, '`.`', table_name, '` DROP KEY `', 
index_name, '`;') AS ddl
FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_schema='test' and index_type='FULLTEXT';

我的第二个选择,如果您不能更改原始数据库并且需要更改脚本,则手动在文本编辑器中编辑 SQL 脚本,而不是尝试使其自动化.这使您有机会检查每个案例并以正确的方式对其进行编辑。

如果您的 SQL 脚本是一个非常大的文件,您可能需要仔细选择您的文本编辑器。

关于mysql - linux:使用 bash 工具从表中删除全文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14032662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com