Skrypt wyciągajacy dane z pliku csv z ostatniej minuty

0

Napisałem skrypt, który uruchamia program ładujący sql*loader co minute. Skrypt czyta plik csv ze struktura (yyyy-mm-dd HH:mm:ss;column1;column2;column3). Potrzebuje że ten skrypt czytał tylko dane które pojawiły się w pliku w ostatniej minucie a nie za każdym razem cały plik. Miałem pomysł żeby czytać rekordy które pojawiły się w pliku w ostatniej minucie i zapisać do innego pliki który będzie czytał sql loader. Problem polega na tym że nie mam pojęcia jak wyciągnąć dane z pliku csv z ostatniej minuty

0

A nie możesz zapisać sobie gdzieś ostatniego nr wiersza i kolejny raz czytać od tego wiersza + 1?

1

A w jakim języku to piszesz? Najlepiej będzie tak jak to robią binlogi od SQL - czytać od ostatniego numeru wiersza.

0

To musi być skrypt w bashu

2

Pokaż już co masz :)

@Piotr17: widzę, że nie śpieszysz się z pokazaniem kodu. Jeśli ma to być w bashu to w mojej opinii powinien to wglądać jakoś tak

#/bin/bash

FILENAME="/pat/to/csv/file.csv"
LAST_READ_LINE_FILE="/temporary/file/to/variable.txt"

if test -f "$LAST_READ_LINE_FILE"; then
	echo "File $LAST_READ_LINE_FILE exist"
else
	echo "File $LAST_READ_LINE_FILE not exist"
	echo "0" > $LAST_READ_LINE_FILE
fi

LAST_READ_LINE=$(cat $LAST_READ_LINE_FILE)
n=1

while read -r line; do

	echo $line
	
	
	if [ "$n" -gt "$LAST_READ_LINE" ]
		#DO SOMETHING WITH $line
	fi
	
	n=$((n+1))
	
done < "$FILENAME"

LAST_READ_LINE=$n
echo $LAST_READ_LINE > $LAST_READ_LINE_FILE
1
Piotr17 napisał(a):

Potrzebuje że ten skrypt czytał tylko dane które pojawiły się w pliku w ostatniej minucie a nie za każdym razem cały plik.

jeśli jakieś źródło napierdziela danymi, to w ogóle ten temat jest źle postawiony. Z wielu powodów:
a) locking na tym pliku. A jeśli nie ma nami lockingu ... to tylko gorzej ...
b) brak czasu, jak mówisz o odstępie 1 minuty
c) objętości, jakie osiąga, i czas w jakim się wczytuje itd ...
d) gdy jest wczytywany/wczytany dane nadal pukają

Może warto przemyśleć dawcę tych danych ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1