Использование команды оболочки Linux для вставки данных CSV в DB2

Мне потребуется некоторая помощь при вставке данных из файла CSV в таблицу CUSTOMER с помощью сценария Shell. Можно ли получить данные CSV через запятую вместо фиксированной позиции данных? Например, данные для моих замечаний не имеют фиксированной позиции, то есть могут содержать 10 или 15 символов, следовательно, переменная изменяется.

#!/bin/bash

PASSFILE=/credentials/systemcredential.properties
USERID=$(cat $PASSFILE | grep UserID | cut -f2 -d=)
PASSWORD=$(cat $PASSFILE | grep Pwd | cut -f2 -d=)

# connect to database
source /opt/db2home/db2profile
db2 connect to DBRPTGU user $USERID using $PASSWORD

#--------------------------------------------------#
# TABLE: CUSTOMER
#--------------------------------------------------#

#db2 "select count(*) from udbcuser.CUSTOMER"

db2 "load from /batchload/data/CUSTOMER.csv of asc
method L(1 7, 9 23, 25 39, 41 47, 49 68)
insert_update into udbcuser.CUSTOMER(CUSTOMER_ID,CUSTOMER_NAME,ITEM_PURCHASED,AMOUNT_PURCHASED,REMARKS)"

Пример данных по запросу:
9000001, Michael Tan, кошелек,$30, первый клиент
9000002, Салли Гомес, Куртка, $ 90,
9000003, Cheng Ning, Boots, $ 80, член
9000004, Ричард Чин, Солнцезащитные очки,$30, Член

Спасибо!

0 ответов

Вот пример сценария.

echo '9000001,Michael Tan,Wallet,$30,First time customer' > dat.csv
echo '9000002,Sally Gomez,Jacket,$90,' >> dat.csv
echo '9000003,Cheng Ning,Boots,$80,Member' >> dat.csv
echo '9000004,Richard Chin,Sunglasses,$30,Member' >> dat.csv

db2 -v drop db db1
db2 -v create db db1
db2 -v connect to db1
db2 -v "create table db2inst1.customer (num int, name char (30), item char (20), price char(10), remark char(20))"
db2 -v "load from dat.csv of del insert into db2inst1.customer"
db2 -v "select * from db2inst1.customer"

Когда ты бежишь, последний select * from db2inst1.customer возвращается как:

NUM         NAME                           ITEM                 PRICE      REMARK
----------- ------------------------------ -------------------- ---------- --------------------
    9000001 Michael Tan                    Wallet               $30        First time customer
    9000002 Sally Gomez                    Jacket               $90        -
    9000003 Cheng Ning                     Boots                $80        Member
    9000004 Richard Chin                   Sunglasses           $30        Member

  4 record(s) selected.

Существует множество опций для команды загрузки, и вот для справки страница руководства по V11.5:

Команда ЗАГРУЗИТЬ
https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.5.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0008305.html

Надеюсь это поможет.

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