Ошибка импорта данных в DB2 - PullRequest
0 голосов
/ 06 мая 2018

Я использую Data Studio для подключения к серверу DB2.Когда я пытаюсь использовать «утилиту импорта» в Data Studio, она выдает предупреждение, и результат показывает, что в базу данных не было вставлено ни одной записи.Мастер импорта генерирует следующую команду SQL

CALL SYSPROC.ADMIN_CMD( 'IMPORT FROM "/home/xyz/backup/TRANSACTION" OF DEL MODIFIED BY coldel| delprioritychar  INSERT INTO S.TRANSACTION' );

Если я скопирую эту команду и вставлю ее в сценарий sql в DB2, а затем запущу ее, она выдаст еще одну ошибку

An I/O error (reason = "sqlofopn -2029060079") occurred while opening the input file.. SQLCODE=-3030, SQLSTATE=

ЕслиЯ использую оболочку db2 для выполнения части команды IMPORT (без CALL SYSPROC.ADMIN_CMD), она успешно выполняется без каких-либо проблем.Что здесь не так?

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Когда вы (или DataStudio) запускаете SYSPROC.ADMIN_CMD (это метод по умолчанию, используемый DataStudio для импорта), действие происходит на Db2-сервере с использованием учетной записи владельца экземпляра Db2 (для Db2-LUW) ,

Для этой учетной записи (например, db2inst1) требуется доступ на чтение к указанному имени файла. В вашем случае владелец экземпляра Db2 не имел доступа к файлу (и / или пути, содержащему файл), поэтому возникло исключение.

Дополнительные сведения о неудачном действии можно найти в файле диагностики Db2-сервера (db2diag.log) в зависимости от уровня диагностики, который активен на Db2-сервере.

0 голосов
/ 06 мая 2018

ADMIN_CMD ожидает, что входной файл находится на сервере, потому что он (как любая другая хранимая процедура) выполняется на сервере; у него нет доступа к вашей локальной файловой системе.

Команды, которые вы запускаете в процессоре командной строки Db2, выполняются на клиенте и поэтому могут обращаться к файлу локально.

...