db2 экспортировать данные в удаленное место

Я пытаюсь подключиться к базе данных db2 (server2) для экспорта данных из таблицы в файл csv, для этого я использую clpplus с локального сервера (server1) (на который я хочу экспортировать csv), поэтому я хочу, чтобы Файл CSV должен находиться на server1, потому что я хочу импортировать его в базу данных 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файл создается на server2, но я хочу, чтобы он был создан на server1. Я пробовал что-то вроде

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

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

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

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

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

на server2:

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

2 ответа

Вы используете 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, как и многие устаревшие сайты. Эта опция имеет предпосылки, в частности, чтоdb2CLP доступен, его пакеты привязаны к целевым базам данных, а узлы и базы данных каталогизированы. Если одна или обе ваши базы данных находятся в облаке, этот вариант может разочаровывать, если у вас нет соответствующих разрешений для привязки необходимых пакетов. Ни одна из этих операций (привязка, каталогизация, экспорт) не связана с программированием, все они являются конфигурацией и обычно выполняются администратором баз данных или сценарием DevOps. Каждая из соответствующих команд подробно документирована в Центре знаний:

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

Каталог действий. На server1 вы должны использоватьdb2 catalog tcpip node s2node...для определения деталей server12. См. Документацию 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

В 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.

Другие вопросы по тегам