Прежде всего, да, это рекомендуемый и самый эффективный способ сначала записать данные в файл.Поначалу это может показаться неэффективным, но запись данных в файл на диске займет совсем немного времени, но Vertica не оптимизирована для многих отдельных операторов INSERT
.Массовая загрузка - это самый быстрый способ получить большие объемы данных в Vertica.Мало того, но когда вы делаете много отдельных INSERT
операторов, вы можете столкнуться с проблемами отката ROS, и даже если вы этого не сделаете, будет дополнительная нагрузка на базу данных, когда контейнеры ROS будут объединены после загрузки.
Вы можете преобразовать ваш массив кортежей в две строковые переменные и затем вывести строку в консоль.
Строка будет выглядеть примерно так:
'2019-02-13 10:00:00', '09d5e206-daba-11e7-b122-00c03aaf89d2', '10.128.67.132', '10.135.3.11', 'SIP', 26, 2911, 4452
'2019-02-13 10:00:00', '09d5e206-daba-11e7-b122-00c03aaf89d2', '10.128.67.132', '10.135.3.21', 'SIP', 26, 4270, 5212
'2019-02-13 10:00:00', '09d5e206-daba-11e7-b122-00c03aaf89d2', '10.128.67.129', '18.215.140.51', 'HTTP2 over TLS', 0, 14378, 5291
Но вместо этогофактически распечатав его на консоль, вы могли бы просто передать его в команду VSQL.
$ python my_script.py | vsql -U dbadmin -d xxx -h xxx -c "COPY pason.dscp FROM STDIN DELIMITER ','"
Это может быть неэффективно.У меня нет большого опыта работы с чрезвычайно длинными строковыми переменными в Python.
Во-вторых, vertica_db_client
больше не разрабатывается Vertica.Хотя он все еще будет поддерживаться по крайней мере до конца срока службы python2, вы должны использовать vertica_python
.
. Вы можете установить vertica_python
с помощью pip.
$ pip install vertica_python
или
$ pip3 install vertica_python
в зависимости от того, с какой версией Python вы хотите его использовать.
Вы также можете собрать исходный код на странице GitHub Vertica https://github.com/vertica/vertica-python/
Что касаетсяиспользуя команду COPY
с vertica_python
, ответ на этот вопрос см. здесь: Импорт данных в SQL с использованием Python
Я использовал несколько библиотек Python для подключения к Vertica и vertica_python
безусловно, мой любимый, и с тех пор, как Vertica переняла разработку от Uber, она продолжала улучшаться на очень регулярной основе.