2013-08-08 5 views
0

Я пытаюсь выполнить следующую команду db2 через модуль питона pyodbcSQL с помощью pyodbc модуль питона

IBM DB2 Command: «экспорта DB2 в C: \ file.ixf из IXF выбрать * из emp_hc "

я успешно подключен к DSN с помощью модуля pyodbc в питона и отлично работает для оператора выбора

, но когда я пытаюсь выполнить следующую команду из IDLE Python 3.3.2

курсора. выполнить ("экспорт в ? из ixf select * from emp_hc ", r" C: \ file.ixf ") pyodbc.ProgrammingError: ('42601', '[42601] [IBM] [драйвер CLI] [DB2/LINUXX8664] SQL0104N Неожиданный токен" db2 ? экспорт из»был найден следующее "BEGIN-OF-ЗАЯВЛЕНИЕ" Ожидаемые маркеры могут включать в себя: "" SQLSTATE = 42601 \ г \ п (-104) (SQLExecDirectW) ')

или cursor.execute (. "экспорт в C: \ file.ixf из IXF выбрать * из emp_hc")

Traceback (самый последний вызов последнего): Файл "", линия 1, в cursor.execute ("экспорт в C: \ MyFile .ixf из ixf select * from emp_hc ") pyodbc.ProgrammingError: ('42601', '[42601] [IBM] [драйвер CLI] [DB2/LINUXX8664] SQL0007N Символ" \ " следующий «экспорт в C:» недействителен. SQLSTATE = 42601 \ r \ n (-7) (SQLExecDirectW) ')

Я что-то не так? Любая помощь будет оценена.

+0

Спасибо большое за ответы, ребята, я попробовал создав пакетный файл в Windows и поместив в него команду экспорта экспорта db2, и вызовите файл bat из моего сценария python, и он сработал. – Marshell

ответ

1

Как EXPORT является утилитой, а не оператором SQL, вы не можете запускать ее напрямую через обычный SQL-интерфейс.

К счастью, IBM предоставляет хранимую процедуру SYSPROC.ADMIN_CMD(), позволяющую вам сделать только то, что вы есть looking for.

Знайте, однако, что использование SYSPROC.ADMIN_CMD() может записывать только экспортированные данные в местоположение на сервере базы данных. (Это в отличие от использования db2 export ..., который записывает файл на любой компьютер, на котором запущена утилита (будь то сервер базы данных или клиент, подключающийся по сети).

1

db2 export - это команда, запускаемая в оболочке, а не через SQL через odbc.

Можно написать результаты запроса базы данных к файлу с python и pyodbc, но db2 export почти наверняка будет быстрее и без усилий обрабатывать форматирование файлов, если вам это нужно для импорта.

+0

Мне, безусловно, нужно импортировать экспорт в базу данных db2, которая, как вы можете сделать, может быть выполнена только путем запуска команда в оболочке ... можете ли вы, пожалуйста, дать мне дополнительную информацию о том, как запустить команду в оболочке, я запутался? любой гид или небольшой быстрый учебник будет замечательным – Marshell

+0

Вам было бы лучше закрыть этот вопрос и спросить на [dba.stackexchange.com] (http://dba.stackexchange.com/). – Bryan

Смежные вопросы