Я вообще не специалист по mongoDB, но могу вам сказать следующее:
Если есть способ сделать это при импорте непосредственно в движке БД, это решение следует использовать,теперь, если эта функция недоступна.
Вы можете использовать любой наивный подход для ее решения:
while read -r line; do echo -e "$line"; done < input_file
INPUT:
cat input_file
Nuray \u00d6zdemir
Erol \u010colakovi\u0107 \u0160ehi\u0107
ВЫХОД:
Nuray Özdemir
Erol Čolaković Šehić
Но, как вы заметили, вызов echo -e
в каждой строке создаст ресурсоемкое изменение контекста (создайте подпроцесс для echo
-> выделение памяти, новая запись в таблице процессов, управление приоритетами, переключение обратно на родительский процесс), что неэффективно для файлов объемом 10 ГБ.
Или используйте более разумный подход с использованием инструментов, которые должны быть доступныв вашем дистрибутиве пример:
whatis ascii2uni
ascii2uni (1) - convert 7-bit ASCII representations to UTF-8 Unicode
Команда:
ascii2uni -a U -q input_file
Nuray Özdemir
Erol Čolaković ᘎhić
Вы также можете разделить (например, split
команда) входной файл на части, параллельно выполнить этап преобразования на каждомвложенный файл, и импортируйте каждый преобразованный кусоккак только станет доступно сокращение общего времени выполнения.