Вопрос

Я изучаю ориентированные на столбцы базы данных и наткнулся на Vertica.

Моя необходимость состоит в том, чтобы подавать базу данных Vertica из C -кода. Мне не удастся получить эту информацию из Vertica: мне сказали использовать «vsql» и команду «Копировать». Все, что я хочу, это проблема INSERT Заявления в моей базе данных Vertica.

Можно ли это сделать?

Например, в PostgreSQL вы можете сделать «встроенный SQL», связав Postgres ecpg библиотека к вашему двоичному дволянице. Я понятия не имею, существует ли такая вещь для Vertica, и я не знаю другого пути.

Любые идеи?

Это было полезно?

Решение

Vertica включает в себя драйвер ODBC для C.

Читать «Программист> Руководство по клиентским библиотекам Vertica> Программирование клиентских приложений ODBC»

В этом разделе подробно описывается процесс настройки драйвера Vertica ODBC. Он также объясняет, как использовать API ODBC для подключения к Vertica в ваших клиентских приложениях.

Другие советы

У вас действительно есть два варианта: вы можете создать файл разграниченных данных со своими данными, например, следующее:

row1col1data,row1col2data,row1col3data,row1col4data
row2col1data,row2col2data,row2col3data,row2col4data
row3col1data,row3col2data,row3col3data,row3col4data

Затем вы можете загрузить это в Vertica, используя команду копирования и vsql. Если у вас есть права суперпользователей базы данных, вы можете загрузить файл напрямую, используя:

vsql -U <username> -w <password> YOURDATABASENAME -c "COPY yourtablename (col1name, col2name, col3name, col4name) FROM 'yourdelimitedfile' DELIMITER ','"

Опусти -w, если вы хотите ввести, сохраните пароль из своей истории и введите его, когда программа запускается. Если у вас нет прав на суперпользователь базы данных, вы все равно можете поставить файл в vsql и получить данные из Stdin - почему Vertica не позволяет вам загружать данные из файла без прав на суперпользователях, но позволит пользователю его трупку через Cat , Я понятия не имею, но вы можете сделать это следующим образом:

cat yourdelimitedfile | vsql -U <username> -w <password> YOURDATABASENAME -c "COPY yourtablename (col1name, col2name, col3name, col4name) FROM STDIN DELIMITER ','"

Или, если у вас есть куча отдельных операторов вставки в файле, разделенных полуколонами, вы можете просто запустить файл через VSQL, следующим образом:

vsql -U <username> -w <password> YOURDATABASENAME -f pathtoyoursqlfile

Но если вы делаете более 1000 строк, объемная загрузка с использованием делитированного файла должна быть намного быстрее.

Надеюсь, это поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top