Сценарий оболочки Linux для импорта файла данных csv в DB2 - PullRequest
0 голосов
/ 12 марта 2019

Я новичок в Linux и хотел бы обратиться за вашей помощью. Задача - импортировать данные CSV в DB2. Это в сценарии оболочки, и по расписанию. Файл имеет заголовок, поэтому я использовал skipcount 1. Разделитель - запятая, поэтому, поскольку он используется по умолчанию, я не включил COLDEL.

  1. Можете ли вы помочь мне разобраться, почему при запуске скрипта мы получили ошибку ниже? Я использую IMPORT и INSERT_UPDATE , потому что я узнал, что метод LOAD удаляет все содержимое таблицы перед импортом данных из файла CSV. Существующие данные в таблице не должны быть удалены. Записи будут обновляться только при наличии изменений из файла CSV, в противном случае следует создать новую запись.

  2. Я смотрю, какой МЕТОД должен использоваться для получения конкретных значений из файла CSV, и в настоящее время я использую МЕТОД P . Я не очень уверен насчет нумерации внутри ее параметра, означает ли он, сколько столбцов нужно открыть, и должен ли он соответствовать тем столбцам, которые я импортирую из файла?

Ниже приведен фрагмент сценария:

db2 connect to MYDB user $USERID using $PASSWORD

LOGFILE=/load/log/MYDBLog.txt

if [ -f /load/data/CUST_GRP.csv ]; then
db2 "import from /load/data/CUST_GRP.csv of del skipcount 1 modified by usedefaults METHOD P(1,2,3,4,5)
messages $LOGFILE
insert_update into myuser.CUST(NUM_ID,NUM_GRP,NUM_TEAM,NUM_LG,NUM_STATUS)";
else echo "/load/data/CUST_GRP.csv file not found." >> $LOGFILE;
fi

if [ -f /load/data/CUST_GRP.csv ]; then
db2 "import from /load/data/CUST_GRP.csv of del skipcount 1 modified by dateformat=\"YYYY-MM-DD\" timeformat=\"HH:MM:SS\" usedefaults METHOD P(1,2,3,4,5,6,7)
messages $LOGFILE
insert_update into myuser.MY_CUST(NUM_CUST,DTE_START,TME_START,NUM_CUST_CLSFCN,DTE_END,TME_END,NUM_CUST_TYPE)";
else echo "/load/data/CUST_GRP.csv file not found." >> $LOGFILE;
fi

Ошибка, с которой я сталкиваюсь, такова:

SQL0104N  An unexpected token "modified" was found following "<identifier>".
Expected tokens may include:  "INSERT".  SQLSTATE=42601

Спасибо!

1 Ответ

0 голосов
/ 12 марта 2019

Нельзя размещать предложения в произвольном порядке в команде IMPORT .
Поместить предложение skipcount 1 перед messages.Команда

LOAD может либо INSERT новая порция данных, либо REPLACE содержимое таблицы, очищающее ее в начале.

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