Also muss ich einen Ordner von .dat-Dateien durchlaufen, extrahieren Sie die Daten und verwenden Sie INSERT INTO, um die Daten in eine Datenbank einzufügen. HierSQL: Wie man diese Fehler repariert?
ist ein Pastebin einer der Dateien, um die Daten zu sehen, arbeite ich mit:
Um das Skript auszuführen Ich nenne nur:
populate_database.sh directoryWithDatFiles
und die Inhalte das populate_database.sh-Skript:
rm test.sql;
sqlite3 test.sql "CREATE TABLE HotelReviews (HotelID SMALLINT, ReviewID SMALLINT, Author CHAR, Content CHAR, Date CHAR, Readers SMALLINT, HelpfulReviews SMALLINT, Over$
IFS=$'\n'
for file in $1/*;
do
author=($(grep "<Author>" $file | sed 's/<Author>//g'));
content=($(grep "<Content>" $file | sed 's/<Content>//g'));
date=($(grep "<Date>" $file | sed 's/<Date>//g'));
readers=($(grep "<No. Reader>" $file | sed 's/<No. Reader>//g'));
helpful=($(grep "<No. Helpful>" $file | sed 's/<No. Helpful>//g'));
overall=($(grep "<Overall>" $file | sed 's/<Overall>//g'));
value=($(grep "<Values>" $file | sed 's/<Value>//g'));
rooms=($(grep "<Room>" $file | sed 's/<Room>//g'));
location=($(grep "<Location>" $file | sed 's/<Location>//g'));
cleanliness=($(grep "<Cleanliness>" $file | sed 's/<Cleanliness>//g'));
receptionarea=($(grep "<Check in/front desk>" $file | sed 's/<Check in \/ front desk>//g'));
service=($(grep "<Service>" $file | sed 's/<Service>//g'));
businessservice=($(grep "<Business service>" $file | sed 's/<Business service>//g'));
length=${#author[@]}
hotelID="$(echo $file | sed 's/.dat//g' | sed 's/[^0-9]*//g')";
for((i = 0; i < length; i++)); do
sqlite3 test.sql "INSERT INTO HotelReviews VALUES($hotelID, $i, 'author', 'content', 'date', ${readers[i]}, ${helpful[i]}, ${overall[i]}, 9, 10, ${location[i]}, ${cleanliness[i]}, ${receptionarea[i]}, ${service[i]}, ${businessservice[i]})";
done
done
sqlite3 test.sql "SELECT * FROM HotelReviews;"
Das Problem, das ich habe Obwohl, obwohl ein Großteil des Skripts funktioniert, gibt es immer noch 5 der 15 Spalten, die ich nicht arbeiten kann. Ich werde Screenshot nur die Fehler, die ich beim Versuch aus, den Code zu ändern:
'author' --> ${author[i]}: http://i.imgur.com/zKQLSqT.jpg
'content' --> ${content[i]}: http://i.imgur.com/pnirIo3.jpg
'date' --> ${date[i]}: http://i.imgur.com/urF5DTa.jpg
9 --> ${value[i]}: http://i.imgur.com/AnBFSWp.jpg
10 --> ${rooms[i]}: same errors as above
Wie auch immer, wenn jemand mir auf diesem helfen könnte, würde ich mich massiv dankbar.
Prost!
Ohne zu sehen, dass die Befehle tatsächlich ausgeführt werden, sehen alle wie SQL-Quotierungsfehler aus. Offenbar müssen Sie die Werte in Ihrer SQL-Anweisung angeben. Mit anderen Worten, dies ist effektiv SQL-Injektion. –
Das ist der Befehl hier, oder? sqlite3 test.sql "INSERT IN HotelBewertungen VALUES ($ hotelID, $ i, 'Autor', 'Inhalt', 'Datum', $ {Leser [i]}, $ {hilfreich}, $ {Gesamt [i] }, 9, 10, $ {location [i]}, $ {Sauberkeit [i]}, $ {receptionarea [i]}, $ {service [i]}, $ {businessservice [i]}) "; – Noob
Und wenn sie einfache Zitate Fehler sind, gibt es eine Chance, dass Sie sie beheben/mir einige Hinweise geben können? – Noob