db2 экспортирует данные в удаленное местоположение - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь подключиться к базе данных db2 (server2) для экспорта данных из таблицы в файл csv, для этого я использую clpplus с локального сервера (server1) (на который я хочу экспортировать csv), причинаЯ хочу, чтобы файл CSV был на сервере1, это то, что я хочу импортировать его в базу данных VERTICA с помощью команды COPY

clpplus db2admin/Password@server2-ip:50000/SAMPLE

, затем я запускаю

EXPORT TO C:\Data\alarms.csv OF DEL MODIFIED BY NOCHARDEL SELECT * FROM v_alarms;

Дело в том, что alarms.csv файл создан на сервере2, но я хочу, чтобы он был создан на сервере1. Я попытался что-то вроде

EXPORT TO server1-ip\C:\Data\alarms.csv OF DEL MODIFIED BY NOCHARDEL SELECT * FROM v_alarms;

, но, похоже, не работает, поскольку он возвращает ошибку ввода-вывода

SQL3001C Ошибка ввода-вывода (причина = "sqlofopn -2029060079") при открытии выходного файла

db2level команда возвращает: на сервере1:

DB21085I Этот экземпляр или установка (имя экземпляра, где применимо:" DB2 ") использует биты "64" и выпуск кода DB2 "SQL11050" с идентификатором уровня "0601010F". Информационными токенами являются «DB2 v11.5.0.1077», «s1906101300», «DYN1906101300WIN64» и пакет Fix Pack «0». Продукт устанавливается в "C: \ PROGRA ~ 1 \ IBM \ SQLLIB" с именем копии DB2 "DB2COPY1".

на сервере2:

DB21085I Этот экземпляр или установка(имя экземпляра, где применимо: «DB2») использует биты «64» и выпуск кода DB2 «SQL11050» с идентификатором уровня «0601010F». Информационными токенами являются «DB2 v11.5.0.1077», «s1906101300», «DYN1906101300WIN64» и пакет Fix Pack «0». Продукт устанавливается в "C: \ PROGRA ~ 1 \ IBM \ SQLLIB" с именем копии DB2 "DB2COPY1".

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Вы используете Db2-LUW v11.5 (в настоящее время последняя версия), которая документирует следующую реструктуризацию CLPPlus по этой ссылке :

Команды IMPORT, EXPORT и LOADесть ограничение, что обрабатываемые файлы должны находиться на сервере (примечание: только для CLPPlus).

У вас есть разные варианты с v11.5 (по сравнению с более ранними версиями), в зависимости от , почему вы хотите создать файлы CSV.

Один вариант с v11.5 - использовать внешние таблицы, то есть скопировать содержимое реальной таблицы во внешнюю таблицу, а затем использовать команду clpplus экспорт (внешняя таблица) . Используйте команду EXPORT CLPPlus для экспорта файла внешней таблицы на локальный сервер, удаленный клиент , IBM® Cloud Object Storage или хранилище объектов AWS S3 . Это может подойти для вашего случая использования, только вы можете решить. Вам нужно изучить документацию, чтобы получить подробности. С этой опцией вы продолжаете использовать CLPPlus, и вам не нужно ничего из следующего:

Еще один более старый вариант - игнорировать CLPplus и вместо этого использовать устаревший процессор db2 командной строки, который имеетКоманда EXPORT, которая записывает выходной файл локально туда, где он работает. Эта опция полезна, если у вас уже есть набор сценариев, которые зависят от CLP, как и многие устаревшие сайты. У этого параметра есть предварительные условия, а именно: db2 CLP доступен, его пакеты связаны с целевыми базами данных и что узлы и базы данных каталогизированы. Если одна или обе ваши базы данных находятся в облаке, эта опция может разочаровать, если у вас нет соответствующих разрешений для связывания необходимых пакетов. Ни одно из этих действий (связывание, каталогизация, экспорт) не является программированием, все они конфигурируются и обычно выполняются администратором базы данных или сценарием devops. Каждая из соответствующих команд подробно документирована в Центре знаний:

Связывание утилит CLI может потребоваться, если ваш клиент db2 отличается от уровня db2 целевой базы данных. Поэтому вам нужно делать это только в том случае, если вы получаете ошибки, в которых упоминается, что пакеты CLI не связаны или отсутствуют.

Действия каталога. На сервере 1 вы должны использовать db2 catalog tcpip node s2node... для определения деталей сервера 12. См. Документацию catalog tcpip node. Затем вы запускаете db2 catalog database ... at node s2node, чтобы указать на удаленную базу данных на узле server2, см. Документацию catalog database. Затем db2 terminate.

Чтобы использовать CLP на сервере server1, db2 connect to ... user ... using ... для подключения к базе данных server2 и, наконец, db2 EXPORT TO\] C:\Data\alarms.csv OF DEL MODIFIED BY NOCHARDEL SELECT * FROM schemaname.v_alarms

1 голос
/ 11 октября 2019

С Db2 11,5 / Db2 Warehouse вы можете использовать ВНЕШНИЕ СТОЛЫ для экспорта данных с помощью CLPPlus , например:

/opt/ibm/db2/v11.5/bin/clpplus <myuser>/<myspass>@<host>:50000/BLUDB

Затем:

SQL> Export external to '/tmp/data.del' options(REMOTESOURCE 'JDBC') select * from db2inst1.mytab ;
DB250000I: The command completed successfully.

REMOTESOURCE - это ключевое слово для хранения данных в другом месте, чем на сервере (например, вы можете использовать LZ4 для сжатия данных перед отправкой, что может помочь, если набор данных большой).

Для возможных optionsзначения см. в документации по CREATE EXTERNAL TABLE. Конечно, вы также можете использовать полноценный клиент Db2, как объяснил Мао.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...