Я новичок в Linux и хотел бы обратиться за вашей помощью. Задача - импортировать данные CSV в DB2. Это в сценарии оболочки, и по расписанию. Файл имеет заголовок, поэтому я использовал skipcount 1. Разделитель - запятая, поэтому, поскольку он используется по умолчанию, я не включил COLDEL.
Можете ли вы помочь мне разобраться, почему при запуске скрипта мы получили ошибку ниже? Я использую IMPORT и INSERT_UPDATE , потому что я узнал, что метод LOAD удаляет все содержимое таблицы перед импортом данных из файла CSV. Существующие данные в таблице не должны быть удалены. Записи будут обновляться только при наличии изменений из файла CSV, в противном случае следует создать новую запись.
Я смотрю, какой МЕТОД должен использоваться для получения конкретных значений из файла 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
Спасибо!