Sqlite inb bash nếu chèn dữ liệu, hãy báo cho tôi biết không có bảng

lập trình


Xin chào, tại sao mã của tôi lại cho tôi biết Lỗi: đang chuẩn bị, không có bảng như vậy: BinanceCex

tôi có cái bàn, tôi chắc chắn có lẽ tôi đã mắc một số lỗi trong script bash?

đánh
#!/bin/bash
set -x


#RunProgram() {
    # Aggiungi qui la logica per eseguire il programma
#}

# Funzione per inserire dati JSON nella tabella SQLite
insert_dataBinance() {
       sqlite3 ConfigDb.db "INSERT INTO BinanceCex (id_symbol, symbol, base, quote, info_symbol, info_status, info_baseAsset, info_baseAssetPrecision, info_quoteAsset, info_quotePrecision,
        info_quoteAssetPrecision, info_baseCommissionPrecision, info_quoteCommissionPrecision, info_orderType_0, info_orderType_1,
        info_orderType_2, info_orderType_3, info_orderType_4, info_icebergAllowed, info_ocoAllowed, info_quoteOrderQtyMarketAllowed,
        info_allowTrailingStop, info_cancelReplaceAllowed, info_isSpotTradingAllowed, info_isMarginTradingAllowed, info_filters_0_filterType,
        info_filters_0_minPrice, info_filters_0_maxPrice, info_filters_0_tickSize, info_filters_1_filterType, info_filters_1_minQty,
        info_filters_1_maxQty, info_filters_1_stepSize, info_filters_2_filterType, info_filters_2_limit, info_filters_3_filterType,
        info_filters_3_maxQty, info_filters_3_stepSize, info_filters_4_filterType, info_filters_4_minTrailingAboveDelta,
        info_filters_4_maxTrailingAboveDelta, info_filters_4_minTrailingBelowDelta, info_filters_4_maxTrailingBelowDelta,
        info_filters_5_filterType, info_filters_5_bidMultiplierUp, info_filters_5_bidMultiplierDown, info_filters_5_askMultiplierUp,
        info_filters_5_askMultiplierDown, info_filters_5_avgPriceMins, info_filters_6_filterType, info_filters_6_minNotional,
        info_filters_6_applyMinToMarket, info_filters_6_maxNotional, info_filters_6_applyMaxToMarket, info_filters_6_avgPriceMins,
        info_filters_7_filterType, info_filters_7_maxNumOrders, info_filters_8_filterType, info_filters_8_maxNumAlgoOrders,
        info_permissions_0, info_permissions_1, info_filters_3_minQty, info_permissions_2, info_permissions_3, info_permissions_4,
        info_permissions_5, info_permissions_6, info_permissions_7, info_permissions_8, info_permissions_9, info_permissions_10,
        info_permissions_11, info_permissions_12, info_permissions_13, info_permissions_14, info_permissions_15, info_permissions_16,
        info_permissions_17, info_permissions_18, info_permissions_19, info_permissions_20, info_permissions_21, info_permissions_22,
        info_defaultSelfTradePreventionMode, info_allowedSelfTradePreveMode_0, info_allowedSelfTradePreveMode_1,
        info_allowedSelfTradePreveMode_2, limits_amount_min, limits_amount_max, limits_price_min, limits_price_max, limits_cost,
        precision_amount, precision_price)
        VALUES ('$1', '$2', '$3', '$4', '$5', '$6', '$7', '$8', '$9', '$10', '$11',
            '$12', '$13', '$14', '$15', '$16', '$17', '$18', '$19', '$20', '$21',
            '$22', '$23', '$24', '$25', '$26', '$27', '$28', '$29', '$30', '$31',
            '$32', '$33', '$34', '$35', '$36', '$37', '$38', '$39', '$40', '$41', 
            '$42', '$43', '$44', '$45', '$46', '$47', '$48', '$49', '$50', '$51',
            '$52', '$53', '$54', '$55', '$56', '$57', '$58', '$59', '$60', '$61', 
            '$62', '$63', '$64', '$65', '$66', '$67', '$68', '$69', '$70', '$71',
            '$72', '$73', '$74', '$75', '$76', '$77', '$78', '$79', '$80', '$81', 
            '$83', '$84', '$85', '$86', '$87', '$88', '$89', '$90', '$91', '$92', '$93');"
}

Extract() {
    
    # -- BINANCE CEX -------------------------------------------------------------------
    BINANCE_Markets="http://localhost:3000/exchange/binance/markets"
    COINBASE_Markets="http://localhost:3000/exchange/coinbase/markets"
    KRAKEN_Markets="http://localhost:3000/exchange/kraken/markets"
    BYBIT_Markets="http://localhost:3000/exchange/bybit/markets"
	
    json_dataBINCEX=$(curl -X GET "$BINANCE_Markets" -H "accept: application/json")
    # Estrai i dati 
    contatore=0
    while true; do
		id_symbol=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].id")
		if [ "$id_symbol" == "null" ]; then
			echo "La variabile 'id_symbol' è nulla. Uscita dal ciclo."
			break
		fi
		symbol=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].symbol")
		base=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].base")
		quote=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].quote")
		info_symbol=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.symbol")
		info_status=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.status")
		info_baseAsset=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.baseAsset")
		info_baseAssetPrecision=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.baseAssetPrecision")
		info_quoteAsset=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.quoteAsset")
		info_quotePrecision=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.quotePrecision")
		info_quoteAssetPrecision=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.quoteAssetPrecision")
		info_baseCommissionPrecision=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.baseCommissionPrecision")
		info_quoteCommissionPrecision=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.quoteCommissionPrecision")
		
		info_orderTypes0=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.orderTypes[0]")
		info_orderTypes1=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.orderTypes[1]")
		info_orderTypes2=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.orderTypes[2]")
		info_orderTypes3=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.orderTypes[3]")
		info_orderTypes4=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.orderTypes[4]")
		info_icebergAllowed=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.icebergAllowed")
		info_ocoAllowed=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.ocoAllowed")
		info_quoteOrderQtyMarketAllowed=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.quoteOrderQtyMarketAllowed")
		info_allowTrailingStop=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.allowTrailingStop")
		info_cancelReplaceAllowed=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.cancelReplaceAllowed")
		info_isSpotTradingAllowed=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.isSpotTradingAllowed")
		info_isMarginTradingAllowed=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.isMarginTradingAllowed")
		info_filters0filtertype=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].filterType")
		info_filters0minPrice=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].minPrice")
		info_filters0maxPrice=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].maxPrice")
		info_filters0tickSize=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].tickSize")
		info_filters1filtertype=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].filterType")
		info_filters1minQty=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].minQty")
		info_filters1maxQty=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].maxQty")
		info_filters1stepSize=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].stepSize")
		info_filters2filtertype=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].filterType")
		info_filters2limit=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].limit")
		info_filters3filtertype=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].filterType")
		info_filters3minQty=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].minQty")
		info_filters3maxQty=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].maxQty")
		info_filters3stepSize=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].stepSize")
		info_filters4filtertype=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].filterType")
		info_filters4minTrailingAboveDelta=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].minTrailingAboveDelta")
		info_filters4maxTrailingAboveDelta=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].maxTrailingAboveDelta")
		info_filters4minTrailingBelowDelta=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].minTrailingBelowDelta")
		info_filters4maxTrailingBelowDelta=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].maxTrailingBelowDelta")
		info_filters5filtertype=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].filterType")
		info_filters5bidMultiplierUp=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].bidMultiplierUp")
		info_filters5bidMultiplierDown=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].bidMultiplierDown")
		info_filters5askMultiplierUp=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].askMultiplierUp")
		info_filters5askMultiplierDown=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].askMultiplierDown")
		info_filters5avgPriceMins=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].avgPriceMins")
		info_filters6filtertype=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].filterType")
		info_filters6minNotional=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].minNotional")
		info_filters6applyMinToMarket=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].applyMinToMarket")
		info_filters6maxNotional=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].maxNotional")
		info_filters6applyMaxToMarket=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].applyMaxToMarket")
		info_filters6avgPriceMins=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].avgPriceMins")
		info_filters7filtertype=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].filterType")
		info_filters7maxNumOrders=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].maxNumOrders")
		info_filters8filtertype=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].filterType")
		info_filters8maxNumAlgoOrders=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.filters[0].maxNumAlgoOrders")
		info_permissions0=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[0]")
		info_permissions1=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[1]")
		info_permissions2=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[2]")
		info_permissions3=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[3]")
		info_permissions4=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[4]")
		info_permissions5=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[5]")
		info_permissions6=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[6]")
		info_permissions7=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[7]")
		info_permissions8=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[8]")
		info_permissions9=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[9]")
		info_permissions10=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[10]")
		info_permissions11=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[11]")
		info_permissions12=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[12]")
		info_permissions13=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[13]")
		info_permissions14=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[14]")
		info_permissions15=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[15]")
		info_permissions16=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[16]")
		info_permissions17=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[17]")
		info_permissions18=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[18]")
		info_permissions19=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[19]")
		info_permissions20=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[20]")
		info_permissions21=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[21]")
		info_permissions22=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.permissions[22]")
		info_defaultSelfTradePreventionMode=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.defaultSelfTradePreventionMode")
		info_allowedSelfTradePreventionModes0=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.allowedSelfTradePreventionModes[0]")
		info_allowedSelfTradePreventionModes1=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.allowedSelfTradePreventionModes[1]")
		info_allowedSelfTradePreventionModes2=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].info.allowedSelfTradePreventionModes[2]")
		limits_amountMin=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].limits.amount.min")
		limits_amountMax=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].limits.amount.max")
		limits_priceMin=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].limits.price.min")
		limits_priceMax=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].limits.price.max")
		limits_cost=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].limits.cost")
		limits_precisionAmount=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].limits.precision.amount")
		limits_precisionPrice=$(echo "$json_dataBINCEX" | jq -r ".[$contatore].limits.precision.price")

		# Chiamata alla funzione per inserire i dati
insert_dataBinance "$id_symbol" "$symbol" "$base" "$quote" "$info_symbol" "$info_status" "$info_baseAsset" "$info_baseAssetPrecision" "$info_quoteAsset" \
					"$info_quotePrecision" "$info_quoteAssetPrecision" "info_baseCommissionPrecision" "info_quoteCommissionPrecision" "info_orderTypes0" "info_orderTypes1" "info_orderTypes2" \
					"info_orderTypes3" "info_orderTypes4" "info_icebergAllowed" "info_ocoAllowed" "info_quoteOrderQtyMarketAllowed" "info_allowTrailingStop" "info_cancelReplaceAllowed" \
					"info_isSpotTradingAllowed" "info_isMarginTradingAllowed" "info_filters0filtertype" "info_filters0minPrice" "info_filters0maxPrice" "info_filters0tickSize" \
					"info_filters1filtertype" "info_filters1minQty" "info_filters1maxQty" "info_filters1stepSize" "info_filters2filtertype" "info_filters2limit" "info_filters3filtertype" \
					"info_filters3minQty" "info_filters3maxQty" "info_filters3stepSize" "info_filters4filtertype" "info_filters4minTrailingAboveDelta" "info_filters4maxTrailingAboveDelta" \
					"info_filters4minTrailingBelowDelta" "info_filters4maxTrailingBelowDelta" "info_filters5filtertype" "info_filters5bidMultiplierUp" "info_filters5bidMultiplierDown" \
					"info_filters5askMultiplierUp" "info_filters5askMultiplierDown" "info_filters5avgPriceMins" "info_filters6filtertype" "info_filters6minNotional" "info_filters6applyMinToMarket" \
					"info_filters6maxNotional" "info_filters6applyMaxToMarket" "info_filters6avgPriceMins" "info_filters7filtertype" "info_filters7maxNumOrders" "info_filters8filtertype" \
					"info_filters8maxNumAlgoOrders" "info_permissions0" "info_permissions1" "info_permissions2" "info_permissions3" "info_permissions4" "info_permissions5" "info_permissions6" \
					"info_permissions7" "info_permissions8" "info_permissions9" "info_permissions10" "info_permissions11" "info_permissions12" "info_permissions13" "info_permissions14" \
					"info_permissions15" "info_permissions16" "info_permissions17" "info_permissions18" "info_permissions19" "info_permissions20" "info_permissions21" "info_permissions22" \
					"info_defaultSelfTradePreventionMode" "info_allowedSelfTradePreventionModes0" "info_allowedSelfTradePreventionModes1" "info_allowedSelfTradePreventionModes2" \
					"limits_amountMin" "limits_amountMax" "limits_priceMin" "limits_priceMax" "limits_cost" "limits_precisionAmount" "limits_precisionPrice" 

		echo "$id_symbol"

		 ((contatore++))
		
	done
  
}




RecoveDataExchange() {
    # Recupera la data dalla tabella StampExchange in SQLite
    data=$(sqlite3 ConfigDB.db "SELECT data FROM StampExchange WHERE id = 1;")

    if [ -z "$data" ]; then
        # Se la data è vuota, inserisci la data di oggi e lancia la funzione Extract
        oggi=$(date +"%Y-%m-%d")
        sqlite3 ConfigDB.db "INSERT INTO StampExchange (id, data) VALUES (1, '$oggi');"
        Extract 
    else
        # Se c'è una data, confrontala con la data di oggi
        oggi=$(date +"%Y-%m-%d")
        if [ "$data" == "$oggi" ]; then
            # Se sono uguali, lancia RunProgram
            #RunProgram
            Extract
        else
            # Se sono diversi, cancella la vecchia data, inserisci quella nuova e lancia Extract
            sqlite3 ConfigDB.db "DELETE FROM StampExchange WHERE id = 1;"
            sqlite3 ConfigDB.db "INSERT INTO StampExchange (id, data) VALUES (1, '$oggi');"
            Extract
        fi
    fi
}
set +x
# Funzione per controllare se una porta è aperta
check_port() {
    host="$1"
    port="$2"
    
    # Utilizza netcat per verificare se la porta è aperta
    nc -z "$host" "$port"
    return $?
}

# Controlla se la porta 3000 è aperta
check_port "127.0.0.1" 3000

if [ $? -eq 0 ]; then
    echo "La porta 3000 è già aperta."
    RecoveDataExchange
else
    # Se la porta non è aperta, esegui il comando Docker
    echo "La porta 3000 non è aperta. Tentativo di avviare il container Docker..."
    docker run -p 3000:3000 docker.io/ccxtrest/ccxt-rest

    # Controlla di nuovo se la porta è aperta dopo aver avviato il container Docker
    check_port "127.0.0.1" 3000

    if [ $? -eq 0 ]; then
        echo "Il container Docker è stato avviato con successo."
    else
        echo "Errore: Impossibile avviare il container Docker o aprire la porta 3000."
        exit 1
    fi
fi

# Continua con il resto dello script...
# Puoi inserire qui il codice aggiuntivo che desideri eseguire

Những gì tôi đã thử:

tôi cũng cố gắng chèn bằng EOF

Giải pháp 1

ở đây bạn có thể tìm thấy db của tôi https://mega.nz/file/zk82ABqa#Lqaoq5_xWVe_2fUtz_oaE49rRADOrMkXzSIy7zwcmuM[^]

Giải pháp 2

Bạn có chắc là bạn có BinanceCex bảng trong tệp SQLite ConfigDB.db?
Kiểm tra tệp db của bạn

Phần cuối
$[k5054@localhost]$  sqlite3 ConfigDB.db .schema
CREATE TABLE BinanceCex( id int,  ... );
CREATE TABLE StampExchange( ... );
$[k5054@localhost]$ 

Bạn có chắc chắn rằng tệp Cơ sở dữ liệu là ConfigDB.db chứ không phải Config.db hay Config.db không? Hãy nhớ rằng, các trường hợp trên linux rất quan trọng, vì vậy configdb.db, ConfigDB.db và ConfigDB.DB đều là các tệp khác nhau.

Đề xuất: sử dụng một biến để giữ tên cơ sở dữ liệu và tên bảng của bạn

đánh
database="ConfigDB.db"
b_cex="BinanceCex"
stamp_ex="StampExchange"

sqlite3 $database "Insert into $b_cex values ( ... )"

Bây giờ, nếu bạn phát hiện ra bảng nên được gọi BinanceExchangecòn hơn là BinanceCexbạn chỉ phải thay đổi mã của mình trong một vị trí.

コメント

タイトルとURLをコピーしました