Dump entire database into file; dump data of one or more tables into a file

ખુલ્લું .dump આખા database ને ફરી ચલાવી શકાય એવા SQL તરીકે નિકાસ કરે છે, .dump t1 t2 ચોક્કસ કોષ્ટકો પસંદ કરે છે, અને .read (કે shell નું redirect) એ dump ને નવા database માં પાછું લાવે છે.

8 min read · 9 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

શુક્રવાર, સાંજે 4:55: બધું backup કરો

પરિણામનું અઠવાડિયું પૂરું થાય છે. પરીક્ષા વિભાગનો છેલ્લો આદેશ: "એક file જેમાં આખું database હોય: students, marks, તપાસનું log, trigger, બધું. અને દેખાડો કે એ ખરેખર પાછું આવે છે."

ગયા પાઠમાં તમે એક કોષ્ટક dump કર્યું. મોટું કરવું એટલે કોષ્ટકો પર loop કરવો નહીં: તમે trigger, indexes, ક્રમ ભૂલી જાઓ.

Shell પાસે એક શબ્દનો જવાબ છે: argument વગરનું .dump: આખું database એક ફરી ચલાવી શકાય એવી SQL ની script તરીકે.

Theory

આખું વાનગીઓનું પુસ્તક

એક કોષ્ટકનું dump એ વાનગીનું કાર્ડ હતું. ખુલ્લું .dump આખું વાનગીઓનું પુસ્તક લખે છે: દરેક કોષ્ટક, દરેક index, દરેક trigger, આધારના ક્રમમાં, ઉપર BEGIN TRANSACTION અને અંતે COMMIT સાથે.

Transaction નું આવરણ કેમ? જેથી restore બધું કે કંઈ નહીં રાંધે: જો ફરી ચલાવવું લીટી 900 પર નિષ્ફળ જાય, તો નવો database અધકચરો રંધાયેલો રહી ન જાય. તમારો એકમ 1 નો transactions નો પાઠ, વધારાનું કામ કરતો.

Follow along

પૂરું backup, પ્રમાણભૂત ક્રમ

  1. sqlite3 college.db Backup કરવાના database પર shell ખોલો.
  2. .output full_backup.sql Shell જે કંઈ છાપે એ બધું file માં મોકલો.
  3. .dump કોઈ argument નહીં = આખું database: બધાં કોષ્ટકો, data, indexes, triggers, એક transaction માં વીંટાળેલાં.
  4. .output stdout પછી .quit પડદા પર છાપવાનું પાછું લાવો, shell છોડો. full_backup.sql એ તમારું વાનગીઓનું પુસ્તક છે.
  5. એક લીટીનો વિકલ્પ (shell ના session વગર): sqlite3 college.db .dump > full_backup.sql Terminal નું redirect .output નું કામ કરે છે; scripts અને cron ના કામમાં હાથવગું.

Theory

ફક્ત અમુક કોષ્ટકો, અને restore

પસંદ કરેલાં કોષ્ટકો: .dump students marks ફક્ત એ બે લખે છે (ગમે તેટલાં નામ). નોંધો: બીજાં કોષ્ટકોના triggers અને indexes સામેલ થતાં નથી; ફક્ત ખુલ્લું .dump જ બધાની ખાતરી આપે છે.

Restore એ SQL ના લખાણને પાછું database માં ફેરવે છે:

  • Terminal માંથી: sqlite3 restored.db < full_backup.sql
  • Shell ની અંદર: .read full_backup.sql

નવી, ખાલી file માં restore કરો: જે database માં એ કોષ્ટકો પહેલેથી હોય એમાં CREATE TABLE ફરી ચલાવવાથી ભૂલ સાથે અટકે છે.

Quiz

તમારે **ફક્ત** students અને marks નાં કોષ્ટકો (data સાથે) સાથીના યંત્ર પર વાંચી શકાય એવા SQL તરીકે ખસેડવાં છે. કઈ command એ file બનાવે છે?

  1. .dump students marks (.output transfer.sql પછી)
  2. .dump કોઈ argument વગર
  3. .schema students marks
  4. .read students marks
Show the answer

.dump students marks (.output transfer.sql પછી)

.dump કોષ્ટકનાં નામોની યાદી સ્વીકારે છે અને બરાબર એટલાં જ નિકાસ કરે છે, માળખું વત્તા data. ખુલ્લું .dump તપાસનું log અને બાકીનું બધું પણ ખેંચી લાવત (ચાલે, પણ 'ફક્ત' ને અવગણે). .schema data વગર માળખું આપે છે, અને .read એ restore ની દિશા છે: એ SQL ની files બનાવવાને બદલે વાપરે છે. Command ને પ્રવાસની દિશા સાથે મેળવવી એ જ આખો પ્રશ્ન છે.

Think first

Restore ની આગાહી કરો

એક student sqlite3 college.db < full_backup.sql ચલાવે છે, મૂળ database માં restore કરતાં જેમાં હજી બધાં કોષ્ટકો છે. Tap કરતાં પહેલાં: શું થાય છે, અને એમણે શું કરવું જોઈતું હતું?

Show the answer

ફરી ચલાવવાનું શરૂ થાય છે અને તરત CREATE TABLE students... પર અથડાય છે જ્યાં students પહેલેથી હાજર છે: ભૂલ, અને transaction નું આવરણ પ્રયાસ પાછો વાળે છે. કશું ગુમાવાતું નથી, પણ કશું restore પણ થતું નથી.

સાચી પ્રથા: નવી file માં restore કરો: sqlite3 restored_college.db < full_backup.sql, પછી SELECT થી ચકાસો, અને બદલવાનું જ ધ્યેય હોય તો જ પછી files બદલો. Restore ની રિહર્સલ ખાલી મંચ પર થાય છે.

Watch out

કારકિર્દી બચાવતા backup ના નિયમો

જે backup તમે ક્યારેય restore કર્યું નથી એ backup નહીં, આશા છે: હંમેશા કામચલાઉ file માં ફરી ચલાવીને ચકાસો.

આંશિક dumps triggers ભૂલી જાય છે: .dump marks એ marks_log પરનું તપાસનું trigger વહન કરતું નથી; આખા database ના કામ માટે ખુલ્લું .dump જોઈએ.

.read ના રસ્તા તમે sqlite3 ક્યાંથી શરૂ કર્યું એની સાપેક્ષ છે: 'file not found' નો સામાન્ય રીતે અર્થ છે કે તમે ખોટા folder માં ઊભા છો, file ગઈ નથી.

Theory

આ વિષયના બાકીના ભાગ સાથે આ ક્યાં મળે છે

Dump ની file શુદ્ધ SQL નું લખાણ છે, એટલે એકમ 1 નું બધું એની અંદર લાગુ પડે છે: તમે એ ખોલીને તમે લખેલું CREATE TRIGGER, તમારા transaction એ commit કરેલા INSERT વાંચી શકો છો. એકમ 3 માં, Python આ workflow આપોઆપ કરશે (program દ્વારા dump માટે જ iterdump() છે), અને આગલા CSV ના પાઠ તમને બીજું નિકાસનું સ્વરૂપ આપે છે: ફક્ત data, databases ને બદલે spreadsheets માટે.

Summary

Key takeaways

  • ખુલ્લું .dump = આખું database SQL તરીકે: કોષ્ટકો, data, indexes, triggers, એક transaction માં.
  • .dump name1 name2 ફક્ત પસંદ કરેલાં કોષ્ટકો નિકાસ કરે છે (બીજે આવેલાં એમનાં triggers સામેલ થતાં નથી).
  • પ્રમાણભૂત ક્રમ: .output file.sql, .dump, .output stdout; કે એક લીટીમાં: sqlite3 db .dump > file.sql.
  • sqlite3 fresh.db < file.sql થી, કે shell ની અંદર .read file.sql થી, ખાલી database માં restore કરો.
  • Transaction નું આવરણ restore ને બધું-કે-કંઈ નહીં બનાવે છે.
  • દરેક backup ને એક વાર ખરેખર restore કરીને ચકાસો.
  • Memory hook: આખું વાનગીઓનું પુસ્તક, ખાલી મંચ પર રિહર્સલ કરાયેલું.

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Database backup and CSV handling

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Dump entire database into file; dump data of one or more tables into a file · Database Handling using Python · Gri-Learn