导入表

如果您决定从 Plain 模式 迁移到 RT 模式 或在某些其他情况下,使用 Plain 模式构建的实时和 percolate 表可以通过 IMPORT TABLE 语句导入到运行 RT 模式的 Manticore。其通用语法如下:

IMPORT TABLE table_name FROM 'path'

其中 'path' 参数必须设置为:/your_backup_folder/your_backup_name/data/your_table_name/your_table_name

‹›
  • bash
bash
📋
mysql -P9306 -h0 -e 'create table t(f text)'
mysql -P9306 -h0 -e "backup table t to /tmp/"
mysql -P9306 -h0 -e "drop table t"
BACKUP_NAME=$(ls /tmp | grep 'backup-' | tail -n 1)
mysql -P9306 -h0 -e "import table t from '/tmp/$BACKUP_NAME/data/t/t'
mysql -P9306 -h0 -e "show tables"

执行此命令会将指定表的所有表文件复制到 data_dir。所有外部表文件,例如 wordforms、exceptions 和 stopwords 也会复制到相同的 data_dirIMPORT TABLE 有以下限制:

  • 原配置文件中指定的外部文件路径必须为绝对路径
  • 仅支持实时 (real-time) 和 percolate 表
  • 普通 (plain) 表需要预先(在 plain 模式下)通过 ATTACH TABLE 转换为实时表

注意,IMPORT TABLE 命令不支持版本低于 5.0.0 创建的表。

indexer --print-rt

如果上述将 plain 表迁移为 RT 表的方法不可行,您可以使用 indexer --print-rt 直接从 plain 表导出数据,无需将其转换为 RT 类型表,然后直接从命令行将导出内容导入到 RT 表中。

不过该方法有一些限制:

  • 仅支持基于 SQL 的数据源
  • 不支持 MVA
‹›
  • bash
bash
📋
/usr/bin/indexer --rotate --config /etc/manticoresearch/manticore.conf --print-rt my_rt_index my_plain_index > /tmp/dump_regular.sql
mysql -P $9306 -h0 -e "truncate table my_rt_index"
mysql -P 9306 -h0 < /tmp/dump_regular.sql
rm /tmp/dump_regular.sql
Last modified: August 28, 2025