Я пытаюсь загрузить данные из файла linux (который содержит дубликаты и данные выгружаются из исходной таблицы) в таблицу.
mylinux file properties:
$ file -bi myfile_I.out
application/octet-stream; charset=binary
перед загрузкой данных в таблицу. Я должен удалить дубликаты из файла linux.
Мой подход к удалению дубликатов:
- Выгрузка данных из исходной таблицы во временный файл (TempeEX.out)
- из файла TempEX.out выполнил функцию sort -u и удалил
дубликаты и окончательные записи уникальных данных загружаются в myfile_I.out
- Наконец загрузите данные myfile_I.out в target_table
У меня проблема в ШАГЕ 2 {Невозможно удалить полные дубликаты из файла TempEX.out}
#------------------------------------------------------------------#
#- Delete the duplicates from TempEX.out write the unique data-----#
#------------------to myfile_I.out----------------------------------#
echo -e "Eliminate the duplicates from the ${FILE_PATH}/TempEX.out
file" >> ${LOG}
sort -u ${FILE_PATH}/TempEX.out > ${DEST_PATH}/myfile_I.out
echo -e "Unique records successfully written into
${DEST_PATH}/myfile_I.out" >> ${LOG}
count=0
while read
do
((count=$count+1))
done <${DEST_PATH}/myfile_I.out
echo -e "Total No of unique records in ${DEST_PATH}/myfile_I.out:"
${count} "\n" >> $LOG
#-----------------------------------------------------------------#
Фактические результаты:
Counts:
$wc -l TempEX.out myfile_I.out
196466 TempEX.out -->#File Contains duplicate records#
196460 myfile_I.out-->#Unique records after my approach(sort -u)#
392926 total
Я сделал несколько функций сортировки, чтобы узнать дубликаты, присутствующие в myfile_I.out
Количество повторяющихся записей в файле TempEX.out
$ cut -d'^X' -f1,6,10 TempEX.out|sort|uniq -d|wc -l
5
Количество повторяющихся записей в файле myfile_I.out
$ cut -d'^X' -f1,6,10 myfile_I.out|sort|uniq -d|wc -l
1
Получил, какие записи (на primary_key), имеющие дубликаты в файле TempEX.out
$ cut -d'^X' -f1,6,10 TempEX.out|sort|uniq -d|cat
701234567 412345678 19
701234568 412345677 18
709875641 412345859 17
701234569 425984031 21
701234570 409845216 20
Получил, какие записи (на primary_key), имеющие дубликаты в файле myfile_I.out
$ cut -d'^X' -f1,6,10 myfile_I.out|sort|uniq -d|cat
709875641 412345859 17
Ожидаемые результаты:
Чтобы удалить дубликаты из файла TempEX.out, загрузите уникальные данные в myfile_I.out.
sort -u TempEX.out > myfile_I.out /*cant resolving the issue*/
Можем ли мы сделать что-то подобное? (Выполнить первичные ключи)
sort -u -f1,6,10 TempEX.out > myfile_I.out