Скрипт для копирования данных одного столбца в другой столбец

Я пишу скрипт для копирования данных одного столбца в другой столбец. Опробовано по следующей логике, бутон не сработал - 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,

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