簡體   English   中英

SQL:如何解決這些錯誤?

[英]SQL: how to fix these errors?

因此,我必須遍歷.dat文件的文件夾,提取數據並使用INSERT INTO將數據插入數據庫。

這是其中一個文件的粘貼框,用於查看我正在使用的數據:

http://pastebin.com/dn4wQjjE

要運行腳本,我只需要調用:

populate_database.sh directoryWithDatFiles

以及populate_database.sh腳本的內容:

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;"

我的問題是,盡管大部分腳本都在工作,但15列中仍有5列無法工作。 我只是將嘗試從以下位置更改代碼時遇到的錯誤截圖:

'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

無論如何,如果有人可以幫助我,我將非常感激。

干杯!

如果您處理大量XML,建議您了解一個SAX解析器,例如Python標准庫中的解析器。 願意編寫這樣的shell腳本的任何人都可以學習它,並且結果將更易於閱讀,並且至少會為正確而祈禱。

如果您想堅持使用正則表達式黑客,請轉至awk 使用“>”作為字段分隔符,可以使用awk行簡化腳本,例如

/<Author>/ { gsub(/'/, "''", $2); author=$2 }
/<Content>/ { gsub(/'/, "''", $2); content=$2 }
...
END { print author, content, ... }

gsub通過將數據中的任何單引號加倍來解決SQL報價問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM