Mysql 如何从句子的大栏中列出不同的单词

Mysql 如何从句子的大栏中列出不同的单词,mysql,sql,Mysql,Sql,我有一个很大的句子列表,大约有1800万条记录(2gb) 我想用所有不同的单词做一张新桌子 id word --------------------------- 1 Hi 2 my 3 name ... 考虑到大型数据库和执行时间,提出请求的最佳方式是什么? 所有句子都有全文索引。这可能有些疯狂/幼稚/不可能-但您可以尝试: 使用将所有数据转储到文本文件中,并从旧表中选择txt到输出文件“file\u name” 用合适的文

我有一个很大的句子列表,大约有1800万条记录(2gb)

我想用所有不同的单词做一张新桌子

id       word
---------------------------
1        Hi 
2        my
3        name  
   ...
考虑到大型数据库和执行时间,提出请求的最佳方式是什么?
所有句子都有全文索引。

这可能有些疯狂/幼稚/不可能-但您可以尝试:

  • 使用
    将所有数据转储到文本文件中,并从旧表中选择txt到输出文件“file\u name”
  • 用合适的文本编辑器打开文件
  • 查找并替换所有不需要的字符(如
    ,!?
  • 查找所有空格并将其替换为
    \n
  • 创建表字(word VARCHAR(50)主键)
  • 从文件导入数据忽略重复项:
    加载数据填充“file\u name”忽略到表字中
  • 更改表格以添加
    id
    列或使用
    INSERT。。选择..
    将数据复制到新表中

这可能很疯狂/幼稚/不可能-但你可以尝试:

  • 使用
    将所有数据转储到文本文件中,并从旧表中选择txt到输出文件“file\u name”
  • 用合适的文本编辑器打开文件
  • 查找并替换所有不需要的字符(如
    ,!?
  • 查找所有空格并将其替换为
    \n
  • 创建表字(word VARCHAR(50)主键)
  • 从文件导入数据忽略重复项:
    加载数据填充“file\u name”忽略到表字中
  • 更改表格以添加
    id
    列或使用
    INSERT。。选择..
    将数据复制到新表中

    • 这里有一种方法。它只需要多次扫描表格,并假设单词之间有一个空格:

      select substring_index(txt, ' ', 1) as word
      from t
      union all
      select substring_index(substring_index(txt, ' ', 2), ' ', -1) as word
      from t
      where txt like '% %'
      union all
      select substring_index(substring_index(txt, ' ', 3), ' ', -1) as word
      from t
      where txt like '% % %'
      union ll
      . . .
      
      问题是,您必须不断添加子查询,直到文本中的最大字数


      换句话说,SQL可以做您想做的事情。然而,它不一定是最佳解决方案。您最好将数据读入Python之类的工具,然后再将其写入数据库。

      这里有一种方法。它只需要多次扫描表格,并假设单词之间有一个空格:

      select substring_index(txt, ' ', 1) as word
      from t
      union all
      select substring_index(substring_index(txt, ' ', 2), ' ', -1) as word
      from t
      where txt like '% %'
      union all
      select substring_index(substring_index(txt, ' ', 3), ' ', -1) as word
      from t
      where txt like '% % %'
      union ll
      . . .
      
      问题是,您必须不断添加子查询,直到文本中的最大字数


      换句话说,SQL可以做您想做的事情。然而,它不一定是最佳解决方案。您最好将数据读入Python之类的工具,然后再将其写入数据库。

      如果您的表有全文支持,为什么您需要一个单词列表?除非您使用php或python之类的客户端语言,否则这将非常困难。@Bohemian Yes first table由FULLTEXT@O.Jones我也在想用php通过列表,但它也需要很长时间,这一定是更好的方式。我需要它在其他数据库中建立一些关系如果你的表是全文支持的,为什么你需要一个单词列表?除非你使用像php或python这样的客户端语言,否则这将是不合理的困难。@Bohemian Yes first表是全文支持的FULLTEXT@O.Jones我也在想用php浏览列表,但它也需要很长时间,这一定是更好的方式。我需要它,以便在其他数据库中建立一些关系分布式文本编辑器与这些大文件做同样的事情,执行时间让我很痛苦。我试着把它们分开,我试着直接放在终端,但不幸的是同样的事情。这个想法很好,我将尝试将他们分成小组,然后尝试这个方法。但我相信这一定是比这更好的方法。这些大文件做同样的事情,执行时间让我很痛苦。我试着把它们分开,我试着直接放在终端,但不幸的是同样的事情。这个想法很好,我将尝试将他们分成小组,然后尝试这个方法。但我相信这一定是比这更好的方法。