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

Мне потребуется помощь в вставке данных из CSV-файла в таблицу CUSTOMER с использованием сценария Shell. Можно ли получить данные CSV с помощью запятой вместо фиксированной позиции данных? Например, данные для моего Remarks не имеют фиксированной позиции, т.е. могут содержать 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,Майкл Тан,Кошелек,$30,Покупатель в первый раз
9000002, Салли Гомес, куртка, 90 долларов,
9000003,Чэн Нин,Ботинки,$80,Член
9000004, Ричард Чин, солнцезащитные очки, 30 долларов, участник

Спасибо!

Почему вы используете «ASC», а не «DEL» в качестве типа файла?

data_henrik 25.02.2019 11:03

Вы можете использовать файлы CSV (load from ... OF DEL modified by .... insert into...), но вы должны быть уверены, что разделитель (например, запятая по умолчанию) не появляется внутри значений данных. Если разделитель столбца может отображаться как данные, либо выберите другой разделитель (modified by coldel...), либо продолжайте использовать файлы с фиксированной шириной, если файлы данных действительно содержат значения столбца с фиксированной шириной.

mao 25.02.2019 11:08

Пожалуйста, предоставьте образец ваших данных

mustaccio 25.02.2019 15:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
840
1

Ответы 1

Вот пример скрипта.

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

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

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