gpt4 book ai didi

database - 如何粗略地自动翻译一次数据库的内容?

转载 作者:搜寻专家 更新时间:2023-10-30 19:46:53 25 4
gpt4 key购买 nike

假设有一个非常大的 SQL 数据库 - 数百个表、数千个字段、数百万条记录。这个数据库是荷兰语的。我想将某些字段的所有值翻译成英文以用于测试目的。它不必完全正确,它必须对测试人员来说是可读的。

我知道大部分文本都存储在整个数据库中名为“名称”和“描述”的字段中。或者基本上所有表中所有类型为 NVARCHAR(任意长度)的字段都将是翻译的候选者。枚举所有的表和字段实在是太麻烦了,我想避免它,所以只翻译这些字段就足够了。

有没有一种方法可以遍历所有表格并为所有记录检索特定字段的值并将其替换为英文翻译?这可以仅使用 SQL 来完成吗?

数据库服务器无关紧要——我可以将数据库安装在 MSSQL、Oracle 或任何选择的服务器上。使用谷歌或其他一些自动工具翻译文本就足够了。当然这个工具必须有一个API才能自动使用。

有没有人有类似操作的经验?

最佳答案

在伪代码中,这是我使用 Oracle 会做的:

Query AllFieldsQuery = new Query(connection,"Select table_name, column_name 
from user_tab_columns where column_name='name' OR column_name='description'");

AllFieldsQuery.ExecuteReader();

它给你这样的东西:

表名 | COLUMN_NAME

表1 |姓名

表2 |姓名

表2 |说明

...... | ............

Foreach TableColumnLine

Query FieldQuery = new Query("Select DISTINCT "+COLUMN_NAME+" AS ToTranslate
from +"TABLE_NAME);

Create a new parametrized query :
MyParamQuery = new ParamQuery(connection, UPDATE TABLE_NAME SET COLUMN_NAME =
@Translated WHERE COLUMN_NAME = @ToTranslate);

Foreach ToTranslateLine

@Translated = GetTranslationFromGoogle(@ToTranslate);

MyParamQuery.Execute(ToTranslate = @ToTranslate, Translated = @Translated);

End Foreach ToTranslateLine

End Foreach TableColumnLine

AllFieldsQuery 为您提供了您需要更新的所有表中的所有字段。

FieldQuery 为您提供了所有需要翻译的文本。

MyParamQuery 更新这些文本中的每一个。

这可能是一个很长的过程,这也取决于你花在翻译上的时间。我建议至少按表进行提交,并打印一份报告,告诉您每个表是否一切正常,因为您可以在 API 中使用排除函数,从第一个查询中排除字段和/或表因为之前已经翻译过了。

.

增强功能:编写文件并在翻译结束时执行它,而不是执行 sql 更新。

如果它太长,它可能会太长,而不是直接执行 sql UPDATES,你宁愿写一个包含所有更新的文件,在你 foreach 之后,去获取文件并在 SQL 中使用它.

.

增强:多线程版本

您的 API 的多线程版本可以让您赢得一些翻译时间,您将所有要翻译的结果放入一个同步队列中,然后使用一个线程池来翻译队列,并将所有翻译后的消息放入另一个队列中同步队列,用于写入 SQL 输出文件或启动更新。

关于database - 如何粗略地自动翻译一次数据库的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4540107/

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