Какая программа создает каталог / etc / mysql и его Содержание?

Я знаю, что вы сказали, что хотите использовать собственные приложения, но GNU Parallel позволит вам выполнять отдельные процессы параллельно, что позволит вам выполнять эту операцию быстрее:

sudo apt-get update
sudo apt-get install parallel
awk -F',' '{print $8}' file.csv | parallel -j+0 cdrtoip {}

Есть многочисленные способы вызова параллельного , но вышеупомянутый метод будет принимать выходные данные из 8-го столбца файла .csv и выполнять один процесс cdrtoip для каждого ядра в вашей системе, в каждой строке одновременно . Таким образом, если вы используете 4 ядра, вы можете выполнить это задание за 25% времени, которое обычно требуется для выполнения.

Положительная сторона parallel заключается в том, что он отслеживает вывод и генерирует его по порядку, как если бы это было только одно выполняемое задание.

После установки, man parallel , чтобы узнать о других способах выполнения (или просмотрите документацию по ссылке). Извините, если это не то, что вы ищете, но это приходило мне на помощь много раз в прошлом.

РЕДАКТИРОВАТЬ: Если вы хотите добавить вывод обратно в .csv, чтобы заменить 8-й столбец, пример ниже будет работать , а был протестирован . Выполнение CSV-файла на 5000 строк на двухъядерном Macbook Pro занимает около 3,25 минуты.

Настройка:

$ cat file.tmp
blah1,blah2,blah3,blah4,blah5,blah6,blah7,1175063050,blah9,blah10,blah11

$ for i in {1..5000}; do cat file.tmp; done > file.csv

$ wc -l < file.csv
5000

Скрипт (с использованием cdrtoip , который вы предоставили):

$ cat csvjob.sh
#!/bin/bash

fragment1="$(cut -d, -f1-7 file.csv | tr ',' "\t")"
fragment2="$(cut -d, -f8 file.csv | parallel -j+0 cdrtoip {})"
fragment3="$(cut -d',' -f9- file.csv | tr ',' "\t")"

paste <(echo "$fragment1") <(echo "$fragment2") <(echo "$fragment3") | sed "s/\t/,/g" > newfile.csv

Результат:

$ time ./csvjob.sh
real    3m23.092s
user    1m22.245s
sys     2m57.794s

$ head -3 newfile.csv
blah1,blah2,blah3,blah4,blah5,blah6,blah7,10.10.10.70,blah9,blah10,blah11
blah1,blah2,blah3,blah4,blah5,blah6,blah7,10.10.10.70,blah9,blah10,blah11
blah1,blah2,blah3,blah4,blah5,blah6,blah7,10.10.10.70,blah9,blah10,blah11

Другое редактирование: На четырехъядерном процессоре было выполнено следующее Mac Mini (также работает и другое):

$ time ./csvjob.sh
real    2m12.171s
user    2m59.816s
sys     2m15.787s

Я также только что понял, что вы сказали 500 000 строк вместо 5 000 строк.Чтобы узнать, что это стоит, посмотрите статистику ниже для выполнения cdrtoip 5 000 раз подряд:

$ time for i in {1..5000}; do cdrtoip 1175063050; done > /dev/null
real    2m32.487s
user    1m26.537s
sys     1m8.270s

Окончательное редактирование: Следующее было выполнено на файле 500 000 строк на четырехъядерном процессоре Mac Mini, на котором, как указывалось ранее, уже было запущено несколько приложений:

$ time ./csvjob.sh

real    216m22.780s
user    301m40.694s
sys     239m44.404s

Я полностью понимаю, что вы имеете в виду, OP.

Даже при параллельной работе это занимает довольно много времени.

Я вижу, что OP нашла лучшее решение. 126 секунд на файл сложно превзойти. Опять же, для чего это стоит, ниже представлена ​​статистика запуска изначально предоставленного cdrtoip с 500000 строк .csv с использованием параллельного (который, как я понимаю, OP не может установить) на 8-ядерная виртуальная машина Debian:

$ time ./csvjob.sh
real    14m7.467s
user    6m3.883s
sys     4m18.556s

0
26.06.2018, 05:27
1 ответ

Содержимое /etc/mysqlсоздается с помощью mysql-server-5.7postinst(, заменяя «5.7» на любую версию, которая у вас есть ). Вы должны попробовать запустить

sudo dpkg-reconfigure mysql-server-5.7

и исправление возникающих ошибок.

Как полностью переустановить mysql? объясняет, как полностью переустановить MySQL. Однако обратите внимание, что удаление /var/lib/mysqlудалит любую базу данных, которую вы создали.

0
28.01.2020, 04:19

Теги

Похожие вопросы