Python 基于关键字在SQL数据库中搜索文本记录并创建计算列的最佳方法

Python 基于关键字在SQL数据库中搜索文本记录并创建计算列的最佳方法,python,sql-server,nlp,Python,Sql Server,Nlp,我有一个大型SQL数据库,其中包含过去15年呼叫中心的所有呼叫记录。我正在处理一部分记录(300-500万条记录)。有一个字段存储为文本,我们在其中存储来自通话、电子邮件等的所有注释。我想提供一个关键字列表,并让程序在记录的新列中输出另一个标签。本质上是用可能出现的问题对每个记录进行分类 例如,我的文字记录中包含“嗨,约翰,谢谢你联系我们以获得你卡车的支持。变速箱是否总是发出这种噪音” 然后,查询将类似于 如果文本记录包含“Truck”和“Transmission”,则新列值为“error123

我有一个大型SQL数据库,其中包含过去15年呼叫中心的所有呼叫记录。我正在处理一部分记录(300-500万条记录)。有一个字段存储为文本,我们在其中存储来自通话、电子邮件等的所有注释。我想提供一个关键字列表,并让程序在记录的新列中输出另一个标签。本质上是用可能出现的问题对每个记录进行分类

例如,我的文字记录中包含“嗨,约翰,谢谢你联系我们以获得你卡车的支持。变速箱是否总是发出这种噪音”

然后,查询将类似于

如果文本记录包含“Truck”和“Transmission”,则新列值为“error123”

我不确定在SQL中这样做是否可行,因为几乎有170个不同的错误需要匹配。我也在想也许可以用Python来完成?我不确定什么最适合这种类型的标签

目前,我正在PowerBI中使用PowerQuery加载SQL表,然后使用170条switch语句创建一个计算列。这似乎可以在超时之前处理大约500k的记录。虽然我可以将我的记录分块,但我知道这不是最好的方法,但我不确定哪个程序最适合它

编辑

根据下面的答案,我将运行一个更新命令,以处理新列上的每个错误。我只能以只读方式访问数据库,所以我使用下面的代码来提取数据并添加一个名为“Error”的新列。我的问题是我想使用update命令来更新新的“Error”列,而不是DB。这可能吗?我知道更新需要一个表,返回的查询表将被调用什么?有可能这样做吗

SELECT *, 'null' AS Error FROM [TicketActivity]
UPDATE 
SET Error = 'desktop'
WHERE ActivityNote LIKE '%desktop%'
   AND ActivityNote LIKE '%setup%'

如果您只需要检查关键字,我不会绕道Python,因为您需要将所有信息从db传输到Python内存并返回


我会使用UPDATE而不是SELECT来启动170个不同版本的,并且有可用的列,您可以在其中输入真或假(或者使用相同的方法将可能的记录复制到另一个表中)

因此,在这里指向正确的方向后,我通过更多的谷歌搜索找到了这一点

SELECT *,
CASE
    WHEN column1 LIKE '%keyword%' 
    AND column1 LIKE '%keyword%' THEN 'Error 123'
    WHEN column1 LIKE '%keyword%' 
    AND column1 LIKE '%keyword%' THEN 'Error 321'
    ELSE 'No Code'
END AS ErrorMessage
FROM [TicketActivity]

尽可能多地重复WHEN语句,并使用WHERE语句选择我的时间范围

如果你想在字符串类型列中搜索单词,那么最好查看全文索引。因此,我跟随这篇文章,我认为这就是我需要做的。我还了解到,他们只授予对表的只读访问权限,因此我无法更新实际的表。因此,我所做的是选择表,并添加一个新列,其中新列称为“Error”。我现在的问题是使用Update命令更新结果中新添加的列,而不是表。我把代码放在我的主要帖子里。