В псевдокоде, вот что я бы сделал, используя 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();
Это дает вам что-то вроде этого:
TABLE_NAME | 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 иметь функцию exclude, которая исключает поля и / или таблицы из первого запроса. потому что они уже были переведены ранее.
.
Улучшение: запись файла и выполнение его в конце перевода вместо выполнения обновлений sql.
Если он слишком длинный и, возможно, будет слишком длинным, вместо непосредственного выполнения SQL-ОБНОВЛЕНИЙ, вы бы предпочли написать файл со всеми вашими обновлениями, и после того, как вы приступите к работе, перейдите к получению файла и используйте его в SQL .
.
Улучшение: многопоточная версия
Многопоточная версия вашего API может позволить вам выиграть некоторое время на перевод, вы поместите все свои результаты для перевода в синхронизированную очередь, и вы используете пул потоков для перевода очереди, и поместите все переведенные сообщения в другую. синхронизированная очередь, которая используется для записи выходного файла SQL или запуска обновлений.