Скрипт для копирования данных одного столбца в другой столбец
Я пишу скрипт для копирования данных одного столбца в другой столбец. Опробовано по следующей логике, бутон не сработал - o/p-номер параметра равен 0.
Моя логика: • Я получил ключи от администратора и скопировал данные в какой-то файл updateupdateStatement. • Используя команду awk, я скопировал определенные данные столбца в некоторый временный файл. • Затем подготовил оператор обновления и затем выполнил его.
#!/bin/ksh
#
# Script to Populate cross_refs based on what is in cross_references
#
#
echo "number of parameters is $#"
if [ $# != 1 ]; then
USAGE="USAGE: $0 cassPassword"
echo ${USAGE}
exit 1
fi
cassPassword=$1
#Add column to admin table
#echo "alter table to add column..."
#echo "ALTER TABLE admin.product ADD cross_refs Map<String,String>;" > updateTable.cql
#cqlsh -u dgadmin -p ${cassPassword} -f updateTable.cql
echo "get keys from cassandra"
echo "copy admin.product (cross_references) to 'updateupdateProductStatement.cql';" > copyInputs.cql
cqlsh -u dgadmin -p ${cassPassword} -f copyInputs.cql
#Convert file that Cassandra created from DOS to Unix
echo "DOS to Unix conversion..."
tr -d '\015' <updateupdateProductStatement.cql >updateupdateProductStatement2.cql
cat updateupdateProductStatement2.cql >tempFile
sed -i "s/^/update admin.product set cross_refs = '/" tempFile
#execute the updated .cql file to run all the update statements
echo "executing updateupdateProductStatement.cql..."
cqlsh -u dgadmin -p ${cassPassword} -f tempFile
1 ответ
Я не совсем уверен, что понимаю смысл вашего сценария, но я могу выделить одну строку, которая выглядит подозрительно...
cat updateFlatFileInputStatements2.cql |awk -F'\t' '{ 19 1 2}' >tempFile
Я думаю, что вы хотите напечатать столбцы 19, 1 и 2 на ваш вывод...
awk -F'\t' 'BEGIN { OFS=" " }{ print $19, $1, $2 }' updateFlatFileInputStatements2.cql > tempFile
Лучше сделать все манипуляции с tempFile
в awk
awk -F'\t' "{ print \"update admin.product set my_refs = \" \$19 \" where id = \" $1 \" and effective_date = \" $2 \"';\"" updateFlatFileInputStatements2.cql > tempFile
Опять же, я не вижу в вашем файле, где tempFile
используется... или где updateFlatFileInputStatements2.cql
генерируется. Похоже, этот кусок кода ничего не делает?
updateupdateStatement.cql
... не знаю, откуда это Это затем раздевается, чтобы сформировать updateupdateStatement2.cql
... который затем манипулирует, чтобы стать tempFile
но... ты не используешь tempFile
- вместо этого вы отправляете updateupdateStatement2.cql
в cqlsh
, Ошибка может быть в том, что вы намеревались отправить tempFile
вместо вашего финала cqlsh
,