మీరు మీ బాష్ స్క్రిప్ట్‌లను MySQL డేటాబేస్ యొక్క విషయాల ఆధారంగా కమాండ్ లైన్ నుండి కనెక్ట్ చేయడం ద్వారా మరియు ప్రశ్నను పంపడం ద్వారా భిన్నంగా అమలు చేయవచ్చు. if విలువ ఆధారంగా శాఖకు బ్లాక్స్.

గమనిక: MySQL లో రూట్ యూజర్‌ను ఎలా ఉపయోగించాలో మా ఉదాహరణలు చూపుతాయి, కానీ మీరు అక్కడ వేరే యూజర్ ఖాతాను భర్తీ చేయాలనుకుంటున్నారు.

బాష్ స్క్రిప్ట్ నుండి SQL ప్రశ్నలను అమలు చేయండి

బాష్ స్క్రిప్ట్‌లో నడుస్తున్న సింటాక్స్ కమాండ్ లైన్ నుండి డేటాబేస్ను యాక్సెస్ చేయడానికి సమానం:

mysql -u root -pPassword -h hostname -D dbname -e 'query'

మీ డేటాబేస్ స్థానికంగా నడుస్తుంటే, మీరు ఫైల్‌ను వదిలివేయవచ్చు -h జెండా. మీరు అభివృద్ధి డేటాబేస్ను నడుపుతుంటే, మీరు ఫైల్ను వదిలివేయవచ్చు -p డేటాబేస్కు పాస్వర్డ్ లేకపోతే ఫ్లాగ్ చేయండి.

ఇది ప్రశ్న ఫలితాలను STDOUT కు ఉత్పత్తి చేస్తుంది, మీరు ఫైల్‌కు దారి మళ్లించవచ్చు:

mysql -u root -D dbname -e 'SELECT * FROM table' > file

… లేదా వేరియబుల్‌లో నిల్వ చేయండి $( ) బిల్డ్:

variable=$(mysql -u root -D dbname -e 'SELECT * FROM table')

అయినప్పటికీ, అవుట్పుట్ అప్రమేయంగా చాలా అందంగా ఉండదు, కాబట్టి మీరు ఉపయోగించడం ద్వారా మీ పనిని సులభతరం చేయవచ్చు -B జెండాను TSV ఆకృతిలో ముద్రించాలి (టాబ్ వేరు చేసిన విలువలు) ఇ -N కాలమ్ శీర్షికలను వదిలివేయడానికి ఫ్లాగ్ చేయండి.

టాబ్ సెపరేటెడ్ వాల్యూస్ (టిఎస్‌వి) ఆకృతిలో ముద్రించడానికి -బి ఫ్లాగ్ మరియు కాలమ్ హెడర్‌లను వదిలివేయడానికి -ఎన్ ఫ్లాగ్‌ను ఉపయోగించండి.

TSV ఫైల్స్ CSV ఫైళ్ళ యొక్క తక్కువ ఉపయోగించిన దాయాదులు, మీరు కమాండ్ లైన్ నుండి మార్చవచ్చు.

నిర్దిష్ట విలువ మరియు శాఖల ధృవీకరణ

మీరు డేటాబేస్లోని విలువ ఆధారంగా శాఖ చేయాలనుకుంటే, మీరు నిర్దిష్ట అడ్డు వరుస మరియు కాలమ్ కోసం ప్రశ్నించవచ్చు మరియు ప్రతిస్పందనను వేరియబుల్‌లో నిల్వ చేయవచ్చు. అప్పుడు మీరు బాష్ ఉపయోగించవచ్చు if ఆ వేరియబుల్ యొక్క విషయాల ఆధారంగా శాఖకు బ్లాక్ చేయండి.

field=$(mysql -u root -BNe 'USE test; SELECT label FROM test WHERE id=1')

if [ $field == 'TEST' ]; then
    //do stuff
fi

మీరు నిర్దిష్ట విలువను అభ్యర్థించినప్పుడు మరియు సాధారణ పోలికను నిర్వహించినప్పుడు మాత్రమే ఇది పనిచేస్తుంది. బాష్ అందించే దానికంటే ఎక్కువ అవకతవకలు అవసరమైతే, మీరు ఉపయోగించవచ్చు awk, ఇది టెక్స్ట్ నుండి వ్యక్తిగత నిలువు వరుసలను ఎంచుకోవచ్చు మరియు పోలికలు చేయవచ్చు:

if [ $(echo $field | awk '{if ($1 == value && $2 == value2) print 1; else print 0}') == "1" ]; then
    //do stuff
fi

ఇక్కడ, ది awk కమాండ్ నిజమైన లేదా తప్పుడు (1 లేదా 0) ను ముద్రిస్తుంది, ఇది బాష్ if పోల్చడానికి మరియు శాఖ చేయడానికి ఉపయోగించవచ్చు.

ఈ రెండు ఉదాహరణలు SQL ప్రశ్న ఒకే వరుసను మాత్రమే ఇస్తుందని ume హిస్తుంది, ఇది ID ద్వారా ఎంచుకోవడం ద్వారా హామీ ఇవ్వబడుతుంది. మీరు మరింత క్లిష్టమైన ప్రశ్నను నడుపుతుంటే, మీరు SQL ఆదేశంతో మొదటి పంక్తికి సమాధానాన్ని పరిమితం చేయాలనుకోవచ్చు LIMIT 1.

తనిఖీ చేయడంలో లోపం: డేటాబేస్ లేదా పట్టిక ఉందో లేదో తనిఖీ చేయండి

మీరు మీ సర్వర్ కోసం ప్రత్యేకంగా ఈ స్క్రిప్ట్‌ను వ్రాస్తున్నప్పుడు, కొంచెం లోపం తనిఖీ చేయడం ఎవరికీ బాధ కలిగించదు. మీరు వాటిని సృష్టించడానికి వెళ్ళే ముందు మీరు పనిచేస్తున్న డేటాబేస్ మరియు పట్టికలు వాస్తవానికి ఉన్నాయని మీరు ధృవీకరించాలి. అలాగే, డేటాబేస్ కనెక్షన్ విఫలమైతే, లోపం కూడా ఇక్కడ ప్రదర్శించబడుతుంది.

SQL ఆదేశం 'USE dbname' ఉంటే లోపం ఏర్పడుతుంది dbname ఉనికిలో లేదు (రిటర్న్ కోడ్> 0). మీరు దానిని ఫైల్‌లో ఉపయోగించవచ్చు if డేటాబేస్ సరిగ్గా కాన్ఫిగర్ చేయబడిందో లేదో తనిఖీ చేయడానికి బ్లాక్ చేయండి:

if mysql -u root -e 'USE mydbname'; then
  
    //database exists, do stuff

fi

మీరు ఫైల్ను రివర్స్ చేయవచ్చు if బూలియన్‌ను ప్రారంభించడం ద్వారా బ్లాక్ చేయండి !, ఇది డేటాబేస్ కాన్ఫిగర్ చేయబడనప్పుడు మాత్రమే కోడ్‌ను అమలు చేస్తుంది, ఇది మొదటిసారి సెటప్ చేయడానికి ఉపయోగపడుతుంది.

అదేవిధంగా, మొదటి వరుసను యాక్సెస్ చేయడానికి ప్రయత్నించడం ద్వారా ఏదైనా పట్టికలు ఉన్నాయా అని మీరు తనిఖీ చేయవచ్చు:

if mysql -u root -e 'USE mydbname; SELECT * FROM tablename LIMIT 1'; then

   //database and table exist, do more stuff

fi

ఎందుకు if బ్లాక్ మీరు ఎంటర్ చేసిన ఏ ఆదేశం యొక్క రిటర్న్ కోడ్‌ను తనిఖీ చేస్తుంది మరియు MySQL ఆదేశాలు ఏవైనా సమస్యలను ఎదుర్కొంటే లోపం కోడ్‌ను తిరిగి ఇస్తాయి, మీరు ఏదైనా ఆదేశాన్ని a లో ఉపయోగించవచ్చు if లోపాల కోసం ఖాతాకు బ్లాక్ చేయండి.

Source link