SQLitećƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć®ę“»ē”Øć¾ćØ悁

Electron悄Node.jsćŖć©ć§ę„­å‹™ē”Øć‚¢ćƒ—ćƒŖć‚’ä½œć‚‹ćØćŖ悋ćØć€å‰²ćØéæ恑悉悌ćŖć„ć®ćŒćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć®ä½æē”Øć€‚ć‚µćƒ¼ćƒćƒ¼åž‹ć®MySQL悄PostgreSQL悒ä½æ恆恓ćØ恫ćŖ悋ćØę€ć„ć¾ć™ćŒć€ć‚Ŗćƒ•ćƒ©ć‚¤ćƒ³ć§ć®ä½æē”Øć‚„ć‚¹ćƒžćƒ•ć‚©ē”ØćØćŖ悋ćØ态SQLite恌ćŖć‚“ć ć‹ć‚“ć č”Œć£ć¦ć‚‚ćƒ™ć‚æćƒ¼ć§ć™ļ¼ˆNoSQLćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć‚‚ć‚ć‚Šć¾ć™ćŒļ¼‰ć€‚

今回ćÆč‡Ŗåˆ†ć®ē‚ŗć®ćƒ”ćƒ¢ćØ恗恦SQLiteć‚’ę‰±ć†ć‚¢ćƒ—ćƒŖć§ć®ć‚³ćƒ¼ćƒ‰ć‚¹ćƒ‹ćƒšćƒƒćƒˆć‚„ēŸ„見ćØć—ć¦č‰²ć€…ćØć¾ćØ悁恦恊恓恆ćØę€ć„ć¾ć™ć€‚ļ¼ˆč؀čŖžćÆNode.jsć§ę“ä½œć‚’ć—ć¦ć„ć¾ć™ļ¼‰

ē›®ę¬”

今回ä½æē”Øć™ć‚‹ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖē­‰

DBć®ä½œęˆć‚„ćƒ“ćƒ„ćƒ¼ć®ę§‹ęˆćŖ恩ćÆ今回ćÆDB Browser for SQLiteć‚’åˆ©ē”Øć—ć¦ä½œęˆć—ć¾ć™ć€‚Windows,macOS,LinuxćØćƒžćƒ«ćƒćƒ—ćƒ©ćƒƒćƒˆćƒ•ć‚©ćƒ¼ćƒ ć«ć‚¢ćƒ—ćƒŖ恌ē”Øę„ć•ć‚Œć¦ć„ć¾ć™ć€‚

ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć®ä½œęˆ

ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć®åž‹

SQLitećÆä»–ć®ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ćØē•°ćŖć‚Šć€ć‘ć£ć“ć†åž‹ć®ę‰±ć„ćÆćƒ©ćƒ•ć«ä½œć‚‰ć‚Œć¦ć„ć¾ć™ć€‚ć‚µćƒ¼ćƒćƒ¼åž‹ć®DB悄AccessćŖ恩恋悉ęÆ”č¼ƒć—ć¦ć‚‚ć€åž‹ć®å–ć‚Šę‰±ć„ćŒåŽ³ę ¼ć§ćÆćŖć„ć®ć§ć€ę‰±ć„ć‚„ć™ćć‚¹ćƒžćƒ•ć‚©ć®ć‚¢ćƒ—ćƒŖćŖ恩恧悂äøå‹•ć®åœ°ä½ć‚’ēÆ‰ć„ć¦ć„ć¾ć™ć€‚

å¤§ćć5ć¤ć®åž‹ćŒē”Øę„ć•ć‚Œć¦ćŠć‚Šć€åˆ—ć®åž‹ć«ćŖć‚Šć¾ć™ć€‚

  • Integer – ę•“ę•°å€¤ć‚’ę ¼ē“
  • Text – ćƒ†ć‚­ć‚¹ćƒˆć‚’ę ¼ē“ļ¼ˆUTF8,UTF16ć§ę ¼ē“ļ¼‰
  • Blob – 惐悤惊ćƒŖćƒ‡ćƒ¼ć‚æć‚’ę ¼ē“ļ¼ˆćƒ•ć‚”ć‚¤ćƒ«ē­‰ļ¼‰
  • Real – ęµ®å‹•å°ę•°ē‚¹ć‚’ę ¼ē“
  • Numeric, NullĀ – ćŖć‚“ć§ć‚‚åž‹ļ¼ˆAccessć®å¤‰ę•°ć§čØ€ć†ę‰€ć®Variantćæ恟恄ćŖ悂恮ļ¼‰

ćØćŖć£ć¦ć„ć¾ć™ć€‚Boolean悄DatećØć„ć£ćŸåž‹ćŒå­˜åœØć›ćšć€é–¢ę•°ćŖć©ć§å‡¦ē†ć‚’č”Œć†ć“ćØ恫ćŖć‚Šć¾ć™ć€‚ć“ć®č¾ŗ悊恌恊恄恊恄開ē™ŗć‚’č”Œć†äøŠć§ć®å£ć«ćŖć‚Šć¾ć™ć€‚

図ļ¼šļ¼•ć¤ć®å¤§ććŖåž‹ć ć‘ćŒć‚ć‚‹

ć‚¤ćƒ³ćƒ‡ćƒƒć‚Æć‚¹ć®ä½œęˆ

MySQL悄Accessć®å “åˆć€ćƒ†ćƒ¼ćƒ–ćƒ«ä½œęˆę™‚ć«é€šåøø态AutoincrementćŖIDåˆ—ć«ć‚¤ćƒ³ćƒ‡ćƒƒć‚Æć‚¹ć‚’åŒę™‚č²¼ć‚Œć‚‹ć®ć§ć™ćŒć€SQLiteć®å “åˆćÆä½œęˆå¾Œć«ä»»ę„ć«ć‚¤ćƒ³ćƒ‡ćƒƒć‚Æć‚¹ć‚’ä½œęˆć™ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚ę¤œē“¢ę™‚ćŖć©ć®é«˜é€ŸåŒ–ćŖ恩恧åæ…要ćŖć‚¤ćƒ³ćƒ‡ćƒƒć‚Æć‚¹ć§ć™ćŒć€é«˜é€ŸåŒ–ć ć‘ć§ćŖ恏重複悒čرåÆ恗ćŖ恄ćŖć©ć®åˆ¶ē“„ć‚’åŠ ćˆć‚‹ē‚ŗ恫悂åæ…要ćØćŖć‚Šć¾ć™ć€‚ä»„äø‹ć®ę‰‹é †ć§ä½œęˆć—ć¾ć™ć€‚

  1. ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’ä½œęˆć™ć‚‹
  2. ä½œęˆå¾Œć«DB Browserć®ćƒ”ćƒ‹ćƒ„ćƒ¼ć‚ˆć‚ŠEdit -> Create Index悒開恏
  3. nameć«é©å½“ćŖć‚¤ćƒ³ćƒ‡ćƒƒć‚Æć‚¹åć‚’ä»˜ć‘ć€é‡č¤‡ć‚’čرåÆ恗ćŖć„å “åˆćÆUniqueć«ćƒć‚§ćƒƒć‚Æć‚’å…„ć‚Œć¾ć™ć€‚
  4. Columnsć‚ˆć‚Šć‚¤ćƒ³ćƒ‡ćƒƒć‚Æć‚¹ć‚’č²¼ć‚‹ć‚«ćƒ©ćƒ ć‚’éøć³ć€ā–¶ć‚’ć‚ÆćƒŖ惃ć‚Æć€‚ć‚½ćƒ¼ćƒˆć‚’éøꊞ
  5. OK悒ć‚ÆćƒŖ惃ć‚Æ恙悋ćØć‚¤ćƒ³ćƒ‡ćƒƒć‚Æć‚¹ćŒä½œęˆć•ć‚Œć¾ć™ć€‚

図ļ¼šåæ˜ć‚Œćšć«ä½œęˆć—ć¾ć—ć‚‡ć†

外éƒØć‚­ćƒ¼åˆ¶ē“„

Access恧恄恆ꉀ恮ćƒŖćƒ¬ćƒ¼ć‚·ćƒ§ćƒ³ć‚·ćƒƒćƒ—ć«ę–¼ć‘ć‚‹é€£éŽ–ę›“ę–°ćƒ»é€£éŽ–å‰Šé™¤ć®čØ­å®šć€‚čØ­å®šć—ć¦ćŠćäŗ‹ć§ćƒžć‚¹ć‚æå“ć§ä¾‹ćˆć°å‰Šé™¤ć•ć‚ŒćŸå “åˆć€é€£ēµć—ć¦ć‚‹ć‚µćƒ–ćƒžć‚¹ć‚æå“ć§ć‚‚åŒć˜IDć‚’ęŒć¤ćƒ¬ć‚³ćƒ¼ćƒ‰ćŒé€£éŽ–å‰Šé™¤ć•ć‚ŒćŸć‚Šć—ć¾ć™ć€‚é€†ć«ćƒžć‚¹ć‚æå“ć«ćŖ恄IDć‚’ć‚µćƒ–ćƒžć‚¹ć‚æå“ć§čæ½åŠ ć™ć‚‹äŗ‹ć‚’åˆ¶é™ć™ć‚‹äŗ‹ćŒåÆčƒ½ć§ć™ć€‚

DB Browserć‚’åˆ©ē”Øć—ćŸå “åˆć«ćÆćƒ†ćƒ¼ćƒ–ćƒ«ć®ć‚«ćƒ©ćƒ é …ē›®ć®äø€ē•Ŗå³å“ć«ć€ŒForeign Keyć€ć®é …ē›®ćŒć‚ć‚Šć¾ć™ć€‚ć“ć“ć§

  1. ć‚µćƒ–ćƒžć‚¹ć‚æå“ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’é–‹ć
  2. 連ēµć—ćŸć„ć‚«ćƒ©ćƒ ć‚’ę±ŗ悁悋ļ¼ˆä¾‹ćˆć°č¦ŖIDćØć„ć£ćŸåˆ—ļ¼‰
  3. Foreign Key恮éƒØåˆ†ć‚’ćƒ€ćƒ–ćƒ«ć‚ÆćƒŖ惃ć‚Æ恙悋
  4. ćƒ—ćƒ«ćƒ€ć‚¦ćƒ³ē­‰ćŒå‡ŗć¦ćć‚‹ć®ć§ć€å·¦ć‹ć‚‰ć¾ćšē“ć¤ć‘ć‚‹ćƒžć‚¹ć‚æå“ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’éøꊞ恙悋
  5. 連ēµć™ć‚‹ćƒžć‚¹ć‚æå“ć®åˆ—ć‚’éøꊞ恙悋ļ¼ˆä»Šå›žćÆćƒžć‚¹ć‚æå“ć®ID列ļ¼‰
  6. ęœ€å¾Œć®ćƒœćƒƒć‚Æć‚¹ć«ćÆ态DELETE CASCADE ON UPDATE CASCADE ć‚’å…„åŠ›ć™ć‚‹

ć“ć‚Œć§å‰Šé™¤ę™‚ć€ę›“ę–°ę™‚ć«é€£éŽ–ēš„ć«å‹•ä½œć™ć‚‹ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚CASCADEć§é€£éŽ–ę›“ę–°ćƒ»é€£éŽ–å‰Šé™¤ć®å‹•ä½œćØćŖć‚Šć¾ć™ć€‚RISTRICTć§ćƒžć‚¹ć‚æå“ć§å‰Šé™¤ćƒ»ę›“ę–°ć‚’č”Œć†ćØć‚Øćƒ©ćƒ¼ćØćŖć‚‹å‹•ä½œćØćŖć‚Šć¾ć™ć€‚ä»–ć«ć‚‚SET NULLć§ćƒžć‚¹ć‚æå“ć§å‰Šé™¤ćƒ»ę›“ę–°ć‚’č”Œć†ćØNULLå€¤ć«ćŖ悋ćØć„ć£ćŸć‚‚ć®ćŒć‚ć‚Šć¾ć™ćŒć€é€šåøøćÆCASCADEćØRISTRICT恮ļ¼’ć¤ć‚’åˆ©ē”Øć—ć¾ć™ć€‚

図ļ¼šćƒ‡ćƒ¼ć‚æć®ę›“ę–°ę¼ć‚Œć‚’é˜²ćć®ć«ęœ‰åŠ¹

ć‚¤ćƒ³ćƒćƒ¼ćƒˆćƒ»ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆ

ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’ä½œęˆå¾Œć€ćƒ—ćƒ­ć‚°ćƒ©ćƒ ć‚’ä½œć‚‹ć«ć‚ćŸć£ć¦ć‚„ćƒćƒƒć‚Æć‚¢ćƒƒćƒ—ć‚’å–ć‚‹ē‚ŗć®ę©Ÿčƒ½ćŒDB Browser恫ćÆå‚™ć‚ć£ć¦ć„ć¾ć™ć€‚ć‚¤ćƒ³ćƒćƒ¼ćƒˆć§ćÆSQLćƒ•ć‚”ć‚¤ćƒ«ćŠć‚ˆć³CSVćƒ•ć‚”ć‚¤ćƒ«ć€ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆć§ćÆSQLćƒ•ć‚”ć‚¤ćƒ«ć€CSVćƒ•ć‚”ć‚¤ćƒ«ć€JSONćƒ•ć‚”ć‚¤ćƒ«ć«åƾåæœć—ć¦ć„ć¾ć™ć€‚

ćƒ—ćƒ­ć‚°ćƒ©ćƒ ä½œęˆę™‚ć®ć‚µćƒ³ćƒ—ćƒ«ćƒ‡ćƒ¼ć‚æ悒ē”Øę„ć™ć‚‹ć®ć«ć“ć®ę©Ÿčƒ½ć‚’ä½æć£ć¦ćƒ†ć‚¹ćƒˆć‚’ć—ć¾ć—ć‚‡ć†ć€‚

ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆå‡¦ē†

仄äø‹ć®ę‰‹é †ć§ćƒ•ć‚”ć‚¤ćƒ«ć‚’ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆå‡ŗę„ć¾ć™ć€‚CSVć®å “åˆćÆļ¼‘ć¤ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’1ćƒ•ć‚”ć‚¤ćƒ«ćØ恗恦态SQLćƒ•ć‚”ć‚¤ćƒ«ć®å “åˆćÆ1å€‹ć®ćƒ•ć‚”ć‚¤ćƒ«ć«ć—ć¦å‡ŗåŠ›ć—ć¾ć™ć€‚ć¾ćŸć€SQLćƒ•ć‚”ć‚¤ćƒ«ć®å “åˆćÆå‡ŗåŠ›ę™‚ć«ć‚¤ćƒ³ćƒćƒ¼ćƒˆć™ć‚‹ę™‚ć®Insertꖇ恫åÆ¾ć—ć¦ć®ć‚Ŗćƒ—ć‚·ćƒ§ćƒ³čØ­å®šć‚’č”Œć†ć“ćØ恌åÆčƒ½ć§ć™ć€‚ćƒ•ć‚”ć‚¤ćƒ« -> Exportć§å®Ÿč”Œć—ć¾ć™ć€‚

図ļ¼šCSVć®å “åˆć®å‡ŗ力ē”»é¢

図ļ¼šSQLć®å “åˆć®å‡ŗ力ē”»é¢

ć‚¤ćƒ³ćƒćƒ¼ćƒˆå‡¦ē†

å‡ŗåŠ›ć—ć¦ćŠć„ćŸCSVćƒ•ć‚”ć‚¤ćƒ«ć‚„SQLćƒ•ć‚”ć‚¤ćƒ«ć‚’SQLiteć®ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć«ć‚¤ćƒ³ćƒćƒ¼ćƒˆć™ć‚‹ę©Ÿčƒ½ć§ć™ć€‚ć‚¤ćƒ³ćƒćƒ¼ćƒˆć«ćÆ2ēØ®é”žć‚ć‚Šć€ćƒ†ćƒ¼ćƒ–ćƒ«ćŒå­˜åœØ恗恦恄ćŖć„å “åˆć«ę–°č¦ć«ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’ä½œć£ć¦ć‚¤ćƒ³ćƒćƒ¼ćƒˆćØć€ę—¢å­˜ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć«ć‚¤ćƒ³ćƒćƒ¼ćƒˆć®ļ¼’恤恫ćŖć‚Šć¾ć™ć€‚å¾Œč€…ć®å “åˆć€ćƒ‡ćƒ¼ć‚æ恌ē©ŗćŖć‚‰ć°å•é”ŒćŖć„ć®ć§ć™ćŒć€ć‚¤ćƒ³ćƒ‡ćƒƒć‚Æć‚¹ć‚’å¼µć£ć¦ć„ćŸć‚Šć€ć‚«ćƒ©ćƒ ćŒUniqueå€¤ć‚’čØ­å®šć—ć¦ć‚‹å “åˆć€ć‚¤ćƒ³ćƒćƒ¼ćƒˆćÆć‚Øćƒ©ćƒ¼ć«ćŖć‚Šć¾ć™ć€‚äŗˆć‚ćƒ‡ćƒ¼ć‚æćÆē©ŗć«ć—ć¦ćŠćć¾ć—ć‚‡ć†ć€‚é€šåøøćÆCSV恧惐惃ć‚Æć‚¢ćƒƒćƒ—ć‚’å–ć£ć¦ćŠććØč‰Æ恄恧恗悇恆怂

ćƒ•ć‚”ć‚¤ćƒ« -> Importć®å®Ÿč”Œć§å–ć‚Šč¾¼ć‚ć¾ć™ć€‚

CSVćƒ•ć‚”ć‚¤ćƒ«ćÆUTF-8 BOMē„”恗恧ē”Øę„ć—ć¦ćŠćć¾ć—ć‚‡ć†ć€‚

図ļ¼šCSVć§ć‚ć‚‰ć‹ć˜ć‚ćƒ‡ćƒ¼ć‚æć‚’ä½œć£ć¦ćŠććØč‰Æ恄恧恗悇恆

ćƒ“ćƒ„ćƒ¼ć®ä½œęˆ

DB Browser for SQLite恧ćÆAccessć®ć‚ˆć†ć«GUIć‹ć‚‰ćƒ“ćƒ„ćƒ¼ļ¼ˆć‚Æć‚ØćƒŖļ¼‰ć‚’ä½œęˆć™ć‚‹ę©Ÿčƒ½ćŒć‚ć‚Šć¾ć›ć‚“ć€‚ćć®ćŸć‚ć€ä½œęˆć™ć‚‹ć«ćÆSQLę–‡ć‚’å©ć„ć¦ä½œęˆć™ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚ć¾ćŸć€ć™ć§ć«ćƒ“ćƒ„ćƒ¼ć‚’ä½œęˆć—ć¦ć‚‹å “åˆć€å¤‰ę›“ć‚’ć™ć‚‹å “åˆćÆäø€ę—¦ć€ćƒ“ćƒ„ćƒ¼ć‚’ćƒ‰ćƒ­ćƒƒćƒ—ć—ć¦ć‹ć‚‰ä½œęˆć™ć‚‹äŗ‹ć«ćŖć‚Šć¾ć™ć€‚

ä½œęˆę‰‹é †ćÆ仄äø‹ć®é€šć‚Šć§ć™ć€‚

  1. DB Browser恮Execute SQL悒開恏
  2. SQLꖇćØ恗恦态仄äø‹ć®ć‚ˆć†ćŖę§‹ę–‡ć‚’å…„åŠ›ć™ć‚‹

CREATE VIEW VIEWć®åå‰ć«ē¶šć‘恦态SELECTꖇ悒ē¶šć‘ć‚Œć°č‰Æ恄恠恑怂SQLitećÆć‚·ćƒ³ćƒ—ćƒ«ćŖć®ć§ę–¹č؀ēš„恫ćÆAccessć»ć©ć‚­ćƒ„ććÆćŖ恄恮恧态SQLę–‡ć‚’ä½œć‚‹ć®ćŒč‹¦ę‰‹ćŖäŗŗćÆ态Access恮ć‚Æć‚ØćƒŖć§ä½œć£ćŸSQLꖇ恧悂恓恓恫CREATE恫ē¶šć‘ć¦ć‚³ćƒ”ćƒšć§ć‚‚ć€ćƒ“ćƒ„ćƒ¼ć‚’ä½œć‚‹ć“ćØćÆåÆčƒ½ć§ć™ć€‚

ā€»ćƒ“ćƒ„ćƒ¼ćŒå­˜åœØć™ć‚‹å “åˆć€ćć‚Œć‚’ē”Øć„ćŸćƒ†ćƒ¼ćƒ–ćƒ«ć«å¤‰ę›“ć‚’åŠ ćˆć‚‹å “åˆć‚‚åŒę§˜ć«äø€ę—¦ć€ćƒ“ćƒ„ćƒ¼ć‚’å‰Šé™¤ć—ćŖ恑悌恰ćŖć‚Šć¾ć›ć‚“ć€‚

図ļ¼šćƒ“ćƒ„ćƒ¼ć‚’ä½œęˆć™ć‚‹ē”»é¢

ćƒ†ćƒ¼ćƒ–ćƒ«ć®ēµåˆ

ćƒ†ćƒ¼ćƒ–ćƒ«ć®ēµåˆć«ćÆć€å†…éƒØēµåˆć€å¤–éƒØēµåˆć€ćƒ¦ćƒ‹ć‚Ŗćƒ³ć®å¤§ććļ¼“ć¤ćŒć‚ć‚Šć€ä»–ć«ć‚‚äŗ¤å·®ēµåˆć‚„č‡Ŗē„¶ēµåˆćŖć©ćŒē”Øę„ć•ć‚Œć¦ć„ć¾ć™ć€‚ćƒ“ćƒ„ćƒ¼ć‚’ä½œęˆć™ć‚‹äøŠć§ć€ļ¼’恤仄äøŠć®ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’é€£ēµć—ć¦ćƒ“ćƒ„ćƒ¼ć‚’ä½œęˆć™ć‚‹ć«ćÆåæ…é ˆć§ć™ć€‚

内éƒØēµåˆ

連ēµć™ć‚‹åˆ—恫恊恄恦恊äŗ’ć„ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć§åŒć˜å€¤ć‚’ęŒć¤ć‚‚ć®ć ć‘ć‚’ęŠ½å‡ŗć—ć¦é€£ēµć—ć¾ć™ć€‚ćƒžć‚¹ć‚æå“ć«ć—ć‹ē„”恄悈恆ćŖćƒ‡ćƒ¼ć‚æć®å “åˆć«ćÆć€ćƒ“ćƒ„ćƒ¼ć«ćÆå‡ŗć¦ćć¾ć›ć‚“ć€‚åæ…ćšćƒžć‚¹ć‚æćƒ»ć‚µćƒ–ćƒžć‚¹ć‚æäø”ę–¹ć«åŒć˜IDē­‰ć‚’ęŒć¤ćƒ‡ćƒ¼ć‚æ恌åæ…要恫ćŖć‚Šć¾ć™ć€‚

äøŠčØ˜ć®ä¾‹ć§ćÆ态masterćƒ†ćƒ¼ćƒ–ćƒ«ć®IDćØsubmaster恮MIDåˆ—ć‚’é€£ēµć—态恊äŗ’ć„ć«åŒć˜å€¤ć‚’ęŒć¤ćƒ¬ć‚³ćƒ¼ćƒ‰ćŒęŠ½å‡ŗć•ć‚Œć¾ć™ć€‚

外éƒØēµåˆ

連ēµć™ć‚‹åˆ—恫恊恄恦ē‰‡ę–¹ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć«ć ć‘ćƒ‡ćƒ¼ć‚æćŒć‚ć‚‹å “åˆć§ć‚‚ęŠ½å‡ŗć—ć¦ćć‚Œć‚‹é€£ēµę–¹ę³•ć§ć™ć€‚ćƒžć‚¹ć‚æå“ć«ć ć‘ćƒ‡ćƒ¼ć‚æćŒć‚ć£ć¦ć‚µćƒ–ćƒžć‚¹ć‚æ恫ē„”ć„å “åˆć§ć‚‚ć€ćƒžć‚¹ć‚æå“ć®ćƒ‡ćƒ¼ć‚æćŒęŠ½å‡ŗć•ć‚Œć‚‹ć‚ˆć†ć«ćŖć‚Šć¾ć™ļ¼ˆć‚µćƒ–ćƒžć‚¹ć‚æå“ć®å€¤ćÆē©ŗć£ć½ć®ć¾ć¾ć«ćŖć‚Šć¾ć™ļ¼‰ć€‚

ä½†ć—ć€SQLitećÆRIGHT OUTER JOINć‚’ć‚µćƒćƒ¼ćƒˆć—ć¦ć„ćŖć„ć®ć§ć€ć‚µćƒ–ćƒžć‚¹ć‚æå“ć‹ć‚‰ćƒžć‚¹ć‚æ偓ćøć®å¤–éƒØēµåˆćÆ利ē”Øå‡ŗę„ć¾ć›ć‚“ć€‚

ćƒ¦ćƒ‹ć‚Ŗćƒ³

ļ¼’恤恮å…ØćåŒć˜ć‚«ćƒ©ćƒ ćØåž‹ć‚’ęŒć¤ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’ļ¼‘ć¤ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć«åˆä½“ć•ć›ć‚‹ć€Accessć§ć„ć†ćƒ¦ćƒ‹ć‚Ŗćƒ³ć‚Æć‚ØćƒŖć«č©²å½“ć™ć‚‹ć‚‚ć®ć§ć™ć€‚ä¾‹ćˆć°ę”Æåŗ—ęÆŽć«ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’ä½œęˆć—ć¦ćŠćć€å„ć€…ć®ę”Æåŗ—ćÆćć”ć‚‰ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’å‚ē…§ć€‚ē®”ē†č€…ćÆ恓悌悉悒ēµåˆć•ć›ćŸćƒ¦ćƒ‹ć‚Ŗćƒ³ćƒ“ćƒ„ćƒ¼ć‚’ęŒć£ć¦å‡¦ē†ć‚’恙悋ćØć„ć£ćŸć‚ˆć†ćŖć‚»ć‚°ćƒ”ćƒ³ćƒˆć‚’čØ­ć‘ć‚‹å “åˆć«åˆ©ē”Øć—ć¾ć™ć€‚

äøŠčØ˜ć®ä¾‹ć§ćÆ态SHIBUYAćƒ†ćƒ¼ćƒ–ćƒ«ćØSHINJUKUćƒ†ćƒ¼ćƒ–ćƒ«ćÆå…ØćåŒć˜ć‚æć‚¤ćƒ—ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć§ć€ļ¼’恤悒ļ¼‘ć¤ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć«UNIONå„ć‚’ä½æć£ć¦ēµåˆć•ć›ć¾ć™ć€‚ä½†ć—ę³Øꄏē‚¹ćØć—ć¦ć€ć“ć®å “åˆć®ćƒ“ćƒ„ćƒ¼ć§ćŠäŗ’ć„ć«ć‚ć‚‹é€£ē•Ŗć®åˆ—ļ¼ˆAccess恧čØ€ć†ę‰€ć®ć‚Ŗćƒ¼ćƒˆćƒŠćƒ³ćƒćƒ¼ć«č©²å½“ļ¼‰ć™ć‚‹åˆ—ćÆ态重複恗ćŖ恄悈恆ćŖå€¤ć«ć™ć‚‹ć¹ćć§ć—ć‚‡ć†ć€‚ć¾ćŸć€ćć®ćƒ¬ć‚³ćƒ¼ćƒ‰ćŒć©ć”ć‚‰ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć«č©²å½“ć™ć‚‹ćƒ¬ć‚³ćƒ¼ćƒ‰ćŖć®ć‹ć®č¦‹åˆ†ć‘ćŒć¤ć‹ćŖ恄ćØć€ć‚³ćƒ¼ćƒ‰ć‚’ę›øćę™‚ć«é¢å€’ć§ć™ć€‚

ę—„ä»˜ć®å·®åˆ†ć‚’å–ć‚‹

SQLitećÆę—„ä»˜åž‹ćØć„ć†ć‚‚ć®ćŒåˆ—ć®åž‹ć«å­˜åœØ恗ćŖć„ć®ć§ć€ä¾‹ćˆć°ļ¼’ć¤ć®ę—„ä»˜ć®å·®åˆ†ć‚’å–ć‚‹å “åˆć©ć†ć—ćŸć‚‰č‰Æ恄恮恋ļ¼ŸćØčØ€ć†ćØ态ē”Øę„ć•ć‚Œć¦ć‚‹é–¢ę•°ć‚’SQLę–‡å†…ć§åˆ©ē”Øć—ć¦å·®åˆ†ć‚’å–ć‚‹äŗ‹ćŒåÆčƒ½ć§ć™ć€‚ć¾ćŸć€ć“ć®ę™‚ć®ę—„ä»˜ćÆyyyy/mm/dd恧ćÆćŖ恏yyyy-mm-ddć®å½¢å¼ć§ć‚ć‚‹åæ…č¦ćŒć‚ć‚‹ć®ć§ć€ć‚ˆćć‚ć‚‹ę—„ä»˜ć®åž‹ć®å “åˆć«ćÆå¤‰ę›ćŒåæ…要恫ćŖć‚Šć¾ć™ć€‚

ä¾‹ćˆć°ć‚µćƒ–ćƒžć‚¹ć‚æć®ę—„ä»˜åˆ—ć®å€¤ćØē¾åœØć®ę—„ę™‚ć‹ć‚‰ć®ę—„ä»˜å·®åˆ†ć‚’diffdatećØć—ć¦ę¼”ē®—ć™ć‚‹å “合ćÆ仄äø‹ć®ć‚ˆć†ćŖ꧋ꖇ恫ćŖć‚Šć¾ć™ć€‚

  • ę—„ä»˜ćŒyyyy/mm/ddć®å “åˆćÆreplaceé–¢ę•°ć§ć‚¹ćƒ©ćƒƒć‚·ćƒ„ć‚’ćƒć‚¤ćƒ•ćƒ³ć«å¤‰ę›ć—ć¦ć‚ć’ć¾ć™ć€‚
  • ę—„ä»˜ć®å·®åˆ†ćØć—ć¦å–ć‚ŠćŸć„å “åˆćÆäø€ę—¦ć€ę—„ä»˜ć®å€¤ć‚’juliandayé–¢ę•°ć§ę•°å€¤ć«å¤‰ę›ć—ć¾ć™ć€‚
  • julianday(‘now’)恫恦ē¾åœØć®ę—„ä»˜ć®ę•°å€¤ć‚’å–å¾—å‡ŗę„ć¾ć™
  • å·®åˆ†ć‚’å–ć‚‹å “åˆć«ćÆ态äøŠčØ˜ć®é–¢ę•°ć§å¤‰ę›ć—ćŸļ¼’ć¤ć®å€¤ć‚’ćƒžć‚¤ćƒŠć‚¹ć§å·®ć—å¼•ćć—ć€CASTé–¢ę•°ć§integeråž‹ć«å¤‰ę›ć—ć¦åˆ—åć‚’čØ­å®šć—ć¾ć™ć€‚

図ļ¼šexpireć®ę—„ä»˜ć‹ć‚‰ē¾åœØę—„ä»˜ć®å·®åˆ†ć‚’diffdatećØć—ć¦å–ć‚Šå‡ŗ恗恟

ę”ä»¶åˆ¤å®šć‚’ć™ć‚‹

AccessćŖ恩恧ćÆ态č؈ē®—列ćØ恗恦ē‰¹å®šć®å€¤ć®å†…å®¹ć‚’å…ƒć«ę”ä»¶åˆ¤å®šć—ćŸēµęžœć‚’IIFé–¢ę•°ć‚’ä½æć£ć¦å‡¦ē†ć™ć‚‹ć“ćØ恌ēµę§‹ć‚ć‚Šć¾ć™ć€‚ć‚Æć‚ØćƒŖäøŠć§ę•°å¼ć‚’꧋ēÆ‰ć—ć¦åˆ¤å®šćŒå‡ŗę„ć‚‹ć®ć§ć‚³ćƒ¼ćƒ‰ć®ēƀē“„恫悂ćŖć‚Šć¾ć™ćŒć€ć“ć‚Œć‚’SQLiteć§å®Ÿē¾ć™ć‚‹å “åˆć€IIFé–¢ę•°ćŒä½æ恈悋悏恑恧ćÆćŖ恄恮恧态čŗ“ććƒć‚¤ćƒ³ćƒˆć«ćŖć‚Šć¾ć™ć€‚ć¾ćŸćć®ę™‚ć«ć€Œā—‹ā—‹ć‚’å«ć‚€å “åˆć€ćØć„ć£ćŸć‚±ćƒ¼ć‚¹ć§ćÆ态Likeę¼”ē®—å­ć‚’ä½æ恆ē‚¹ćÆåŒć˜ć§ć™ćŒć€ćƒÆć‚¤ćƒ«ćƒ‰ć‚«ćƒ¼ćƒ‰ć®ęŒ‡å®šę–¹ę³•ćŒē•°ćŖć‚‹ć®ć§ć€ć“ć“ć‚‚å«ć‚ć¦

怌ē‰¹å®šć®åˆ—ć®å€¤ć«ć€å›ŗå®šć€‘ćØć„ć†ę–‡å­—åˆ—ćŒå«ć¾ć‚Œć‚‹å “åˆć«ćÆ态-1悒态恝恆恧ćŖć„å “åˆ0悒čæ”恗态judgmentćØć„ć†åˆ—ć§č”Øē¤ŗ恙悋怍

ć‚’å®Ÿē¾ć™ć‚‹å “合仄äø‹ć®ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚å¤šę•°å«ć¾ć‚Œć‚‹ćƒ‡ćƒ¼ć‚æ恫åÆ¾ć—ć¦č”Œć£ćŸć®ć§ć‚°ćƒ«ćƒ¼ćƒ—åŒ–ć—ć¦ć„ć¾ć™ćŒć€ć‚°ćƒ«ćƒ¼ćƒ—åŒ–ćÆåæ…須項ē›®ć§ćÆć‚ć‚Šć¾ć›ć‚“ć€‚

  • ę”ä»¶åˆ¤å®šćÆ态CASEļ½žWHENå„ć‚’ä½æć£ć¦č”Œć‚ć›ć¾ć™ć€‚
  • WHEN恌ā—‹ā—‹ć®å “合ćØć„ć£ćŸå½¢ć§č¤‡ę•°čæ½åŠ ć§ćć‚‹ć®ć§ć€IFćØ恄恆悈悊SELECTę–‡ć®ć‚ˆć†ćŖć‚¹ć‚æć‚¤ćƒ«ć§ć™
  • ELSEćÆäøŠčØ˜ć®ę”ä»¶ä»„å¤–ć®å “åˆć€VBA恮CASE ELSEć«č©²å½“ć—ć¾ć™ć€‚
  • END恧ēµ‚ć‚ć‚‰ć›ć¦ć€as judgmentć§åˆ—ćØ恗恦č”ØčØ˜ć—ć¦ć„ć¾ć™ć€‚
  • THENć§å€¤ć‚’čæ”ć—ć¾ć™ć€‚
  • ā—‹ā—‹ć‚’å«ć‚€å “åˆć«ćÆ态ćƒÆć‚¤ćƒ«ćƒ‰ć‚«ćƒ¼ćƒ‰ć‚’Likeę¼”ē®—子ćØćØ悂恫ä½æć„ć¾ć™ćŒć€ć‚¢ć‚¹ć‚æćƒŖć‚¹ć‚Æ恧ćÆćŖ恏怌%ć€ć§ę‹¬ć‚Šć¾ć™ć€‚
  • ć‚°ćƒ«ćƒ¼ćƒ—åŒ–ć™ć‚‹å “åˆć€é€šåøøć®åˆ—ćÆgroup być§ć‚°ćƒ«ćƒ¼ćƒ—åŒ–ć—ć¾ć™ćŒć€åˆ¤å®šåˆ—ćÆę¼”ē®—列ćŖć®ć§ć‚°ćƒ«ćƒ¼ćƒ—åŒ–ć™ć‚‹åæ…要ćÆć‚ć‚Šć¾ć›ć‚“ć€‚
  • WHEREę”ä»¶ć‚’ć¤ć‘ć¦ć€judgmentć®å€¤ćŒ-1ć®ć ć‘ć‚’ęŠ½å‡ŗć‚‚åŒę™‚ć«č”Œćˆć¾ć™

ć‚°ćƒ«ćƒ¼ćƒ—åŒ–

ćƒ¬ć‚³ćƒ¼ćƒ‰ćƒ‡ćƒ¼ć‚æ悒ē‰¹å®šåˆ—ć§ć‚°ćƒ«ćƒ¼ćƒ”ćƒ³ć‚°ć—ć€åˆčØˆć‚„å¹³å‡ć€ć‚«ć‚¦ćƒ³ćƒˆćŖć©ć‚’č”Œć†ćŸć‚ć®GROUP BY悒ä½æ恆恓ćØ恌åÆčƒ½ć§ć™ć€‚ć•ć‚‰ć«ć“ć®ć‚°ćƒ«ćƒ¼ćƒ—åŒ–å¾Œć®ćƒ‡ćƒ¼ć‚æ恫åÆ¾ć—ć¦ćÆ态HAVINGå„ć‚’ē”Øć„ć¦ę”ä»¶čØ­å®šć‚’ć™ć‚‹ć“ćØć§ęŠ½å‡ŗ恙悋äŗ‹ć‚‚åÆčƒ½ć§ć™ć€‚

äøŠčØ˜ć®ä¾‹ć§ćÆ态SUBMASTER恮uidåˆ—ć ć‘ć‚’å–ć‚Šå‡ŗć—ć€ć‚«ć‚¦ćƒ³ćƒˆć®åˆ—ćØ恗恦sharecnt悒čØ­ć‘ć‚‹ć€‚group by恫恦uidåˆ—ć‚’ć‚°ćƒ«ćƒ¼ćƒ”ćƒ³ć‚°åŒ–ć—ć¦ć„ć¾ć™ć€‚ć¾ćŸć€having恫恦sharecntåˆ—ć®å€¤ćŒ0悈悊äøŠć®ćƒ¬ć‚³ćƒ¼ćƒ‰ć ć‘ć‚’ęŠ½å‡ŗć™ć‚‹ć‚ˆć†ć«ę”ä»¶čØ­å®šć‚‚åŠ ćˆć¦ć„ć¾ć™ć€‚

counté–¢ę•°ćŖ恩恮集čØˆé–¢ę•°ćÆć‚°ćƒ«ćƒ¼ćƒ—åŒ–ć—ć¦ć„ćŖ恄ćØ利ē”Øå‡ŗę„ć¾ć›ć‚“ć—ć€ć“ć®ć‚°ćƒ«ćƒ¼ćƒ—åŒ–ćÆåŸŗęœ¬ęœ€åˆć«å–ć‚Šå‡ŗć—ćŸć™ć¹ć¦ć®åˆ—ć«åÆ¾ć—ć¦čØ­å®šć—ćŖ恑悌恰ćŖ悉ćŖ恄恮恧态group być®å¾Œć«å…ØéƒØć®åˆ—ćŒåˆ—ęŒ™ć•ć‚Œć¦ć„ćŖ恄ćØć‚Øćƒ©ćƒ¼ć«ćŖć‚Šć¾ć™ć€‚ć©ć†ć„ć£ćŸåˆ—ć ć‘å–ć‚Šå‡ŗć—ć‚°ćƒ«ćƒ¼ćƒ—åŒ–ć™ć¹ćć‹ćŒę‚©ć‚€ćƒć‚¤ćƒ³ćƒˆć§ć™ć€‚

ā€»ä½†ć—态SQLitećÆAccessć®ć‚ˆć†ćŖPivotå„ć«ćÆęœŖåƾåæœćŖ恮恧态ć‚Æćƒ­ć‚¹é›†č؈ćÆå‡ŗę„ć¾ć›ć‚“ć€‚ć®ć§ć€ć‚¢ćƒ—ćƒŖå“ć§ćƒ”ćƒœćƒƒćƒˆå‰ć®ćƒ‡ćƒ¼ć‚æ恋悉ć‚Æćƒ­ć‚¹é›†čØˆćƒ‡ćƒ¼ć‚æć‚’é…åˆ—ć§ä½œć£ć¦ć‚ć’ć‚‹ćŖ恩恮åƾåæœćŒåæ…要恫ćŖć‚Šć¾ć™ć€‚

図ļ¼šé›†čØˆć§ćÆåæ…恚ä½æć†ć‚°ćƒ«ćƒ¼ćƒ”ćƒ³ć‚°

惈ćƒŖć‚¬ćƒ¼

ć‚ć‚‹ćƒ†ćƒ¼ćƒ–ćƒ«ć«ćƒ‡ćƒ¼ć‚æ悒čæ½åŠ ć‚„ę›“ę–°ć‚’ęŽ›ć‘ćŸę™‚ć«ć€åˆ„ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć«åÆ¾ć—ć¦ć‚‚ćŖ悓悉恋恮SQLꖇ悒č‡Ŗå‹•ć§ē™ŗč”Œć—ć¦ä½œę„­ć‚’ć•ć›ć‚‹ē‚ŗć®ć‚‚ć®ćŒćƒˆćƒŖć‚¬ćƒ¼ć§ć€ä¾‹ćˆć°INSERTå±„ę­“ć‚’č‡Ŗå‹•ć§ę®‹ć—ćŸć‚Šć€ćƒ¬ćƒ—ćƒŖć‚«ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć«č‡Ŗå‹•ć§čæ½åŠ ć—ćŸć‚Šć€ćƒ—ćƒ¬é›†čØˆć‚’č”Œć‚ć›ć¦ćŠć„ć¦å®Ÿéš›ć®é›†čØˆę™‚é–“ć®ēŸ­ēø®ćŖć©ć€ćƒ—ćƒ­ć‚°ćƒ©ćƒŸćƒ³ć‚°ē„”ć—ć§č”Œć‚ć›ć‚‹ä¾æ利ćŖåé¢ć€ćƒ—ćƒ­ć‚°ćƒ©ćƒŸćƒ³ć‚°ć»ć©č‡Ŗē”±åŗ¦ćŒć‚ć‚‹ć‚ć‘ć§ćÆćŖ恄恮恧态ä½æ恄ꉀćÆéøć¶ę©Ÿčƒ½ć§ć™ć€‚

ćƒ“ćƒ„ćƒ¼åŒę§˜ć€DB BrowseräøŠć§ćÆSQLę–‡ć‚’å©ć„ć¦ä½œęˆć‚’č”Œć„ć¾ć™ć€‚ä½œęˆę‰‹é †ćÆ仄äø‹ć®é€šć‚Šć§ć™ć€‚

  1. DB Browser恮Execute SQL悒開恏
  2. SQLꖇćØ恗恦态仄äø‹ć®ć‚ˆć†ćŖę§‹ę–‡ć‚’å…„åŠ›ć™ć‚‹

äøŠčØ˜ć®ä¾‹ć ćØć€ćƒ†ćƒ¼ćƒ–ćƒ«åć«åÆ¾ć—ć¦ UPDATE ć‚’ć—ćŸę™‚ć«BEGIN仄äø‹ć®SQLę–‡ć‚’å®Ÿč”Œć™ć‚‹ćØć„ć†ę„å‘³ć«ćŖć‚Šć¾ć™ć€‚č‡Ŗå‹•å®Ÿč”Œć™ć‚‹SQLꖇćÆ複ꕰčØ­ē½®åÆčƒ½ć§ć€UPDATEä»„å¤–ć«INSERT态DELETEćŒć‚ć‚Šć¾ć™ć€‚

SQLꖇ恧ćÆnewć‚’ć‚«ćƒ©ćƒ åć«ć¤ć‘ć‚‹äŗ‹ć§ę–°ć—ć„å€¤ć€old悒恤恑悋恓ćØć§å¤ć„å€¤ć‚’å–å¾—ć—ć€INSERTꖇćŖć©ć§åˆ©ē”Ø恙悋恓ćØ恌åÆčƒ½ć§ć™ć€‚

図ļ¼šä½†ć—ćƒˆćƒŖć‚¬ćƒ¼ćÆ多ē”Øć™ć‚‹ć¹ć‹ć‚‰ćš

ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ęš—å·åŒ–

SQLite恫SQLCipherćØ恄恆仕ēµ„ćæ悒ēµ„ćæåˆć‚ć›ć¦ć€ć‚»ć‚­ćƒ„ć‚¢ćŖćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹é‹ē”Øć‚’č”Œć†äŗ‹ćŒåÆčƒ½ć§ć™ć€‚DB Browser for SQLiteć‚¤ćƒ³ć‚¹ćƒˆćƒ¼ćƒ«ę™‚ć«é€šåøøćÆćƒŽćƒ¼ćƒžćƒ«ćŖSQLite恮ćæćŒć‚¤ćƒ³ć‚¹ćƒˆćƒ¼ćƒ«ć•ć‚Œć¾ć™ćŒć€ć‚Ŗćƒ—ć‚·ćƒ§ćƒ³ć§SQLCiper悒éø恶ćØć€ęš—å·åŒ–åƾåæœē‰ˆć®DB Browser for SQLiteć‚‚åˆ„é€”ć‚¤ćƒ³ć‚¹ćƒˆćƒ¼ćƒ«ć•ć‚Œć¾ć™ć€‚

ć‚¤ćƒ³ć‚¹ćƒˆćƒ¼ćƒ«å¾ŒćÆ恙恐恫ä½æ恈悋ēŠ¶ę…‹ć«ćŖć£ć¦ćŠć‚Šć€

  1. ćƒ„ćƒ¼ćƒ«ć‚ˆć‚Šć€ŒTool怍-> 怌set encryption怍悒éø恶
  2. ćƒ‘ć‚¹ćƒÆćƒ¼ćƒ‰ć‚’å…„åŠ›ć—ć€ęš—å·åŒ–ć‚Ŗćƒ—ć‚·ćƒ§ćƒ³ć‚’éøć³ć€OK悒ć‚ÆćƒŖ惃ć‚Æ
  3. ć‚»ćƒƒćƒˆć•ć‚Œć‚‹ćØ再čŖ­ćæč¾¼ćæć•ć‚Œć¦ć€ćƒ‘ć‚¹ćƒÆćƒ¼ćƒ‰ć‚’å†åŗ¦å…„åŠ›ć™ć‚‹ćØć‚Ŗćƒ¼ćƒ—ćƒ³ć§ćć‚‹ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚

ä½†ć—ęš—å·åŒ–ć—ćŸSQLitećƒ•ć‚”ć‚¤ćƒ«ć®å “åˆć€ćƒ—ćƒ­ć‚°ćƒ©ćƒ ć‹ć‚‰ć®čŖ­ćæę›ø恍ćÆSQLCipheråƾåæœć®ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ćŒåæ…要恧态Node.js恠ćØnode-sqlite3恧ćÆćŖ恏态better-sqlite3-sqlcipherć‚’åˆ©ē”Ø恙悋恓ćØ恫ćŖć‚Šć¾ć™ć€‚(node-sqlite3恧悂č‡ŖåŠ›ć§ćƒ“ćƒ«ćƒ‰ć™ć‚Œć°SQLCipheråƾåæœć§ćć‚‹ć‚ˆć†ć§ć™ćŒļ¼‰

図ļ¼šęš—号化SQLiteć‚’ä½œęˆäø­

Vacuum

SQLite悂ē«‹ę“¾ćŖćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć€‚ćƒ‡ćƒ¼ć‚æ恮čæ½åŠ ć‚„å‰Šé™¤ć€ćƒ†ćƒ¼ćƒ–ćƒ«ć®å‰Šé™¤ćŖć©ć«ä¼“ć£ć¦ć€ęœ¬ę„ć§ć‚ć‚Œć°ęø›ć£ćŸåˆ†ć ć‘ćƒ•ć‚”ć‚¤ćƒ«ć‚µć‚¤ć‚ŗ恌ęø›ć‚‹ć¹ććŖć®ć§ć™ćŒć€SQLitećÆćƒ†ćƒ¼ćƒ–ćƒ«ä½œęˆę™‚ć«ć‚Ŗćƒ—ć‚·ćƒ§ćƒ³ęŒ‡å®šć§ć€Vacuumć®ęŒ‡å®šć‚’ć—ć¦ć„ćŖ恄ćØ态DBćŒč‚„å¤§åŒ–ć™ć‚‹äŗ‹ćŒć‚ć‚Šć¾ć™ć€‚SQL恮Vacuumę–‡ć‚’ä»»ę„ć«å®Ÿč”Œć™ć‚‹äŗ‹ć§ć€ę®‹ć£ćŸćƒŽć‚¤ć‚ŗćƒ‡ćƒ¼ć‚æę–‡ć ć‘ć‚·ćƒ„ćƒŖćƒ³ć‚Æć—ć¦ćć‚Œć‚‹ć‚ć‘ć§ć™ćŒć€ęÆŽå›žę‰‹å‹•ć§č”Œć†ć®ć‚‚ć”ć‚‡ć£ćØč€ƒćˆć‚‚ć®ć€‚

ćØ恄恆恓ćØć§ć€ćƒ†ćƒ¼ćƒ–ćƒ«ä½œęˆå‰ć§ćŖ恑悌恰ćŖć‚Šć¾ć›ć‚“ćŒć€DB Browser for SQLite恫恦Auto_vacuum恮ć‚Ŗćƒ—ć‚·ćƒ§ćƒ³ęŒ‡å®šć‚’ć—ć¦ćŠćć¾ć—ć‚‡ć†ć€‚

  1. DB Browser for SQLiteć§ę–°č¦ć«ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć‚’ä½œęˆć™ć‚‹
  2. ć‚æćƒ–ć®ćƒ—ćƒ©ć‚°ćƒžē·Ø集悒開恏
  3. Auto Vacuum恮項ē›®ć‚’ć€ŒFullć€ć«ęŒ‡å®šć™ć‚‹
  4. ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć«ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’ä½œć£ć¦äæå­˜ć™ć‚‹

VacuumꖇćÆ惎悤ć‚ŗć®é™¤åŽ»ćØćƒ•ćƒ©ć‚°ćƒ”ćƒ³ćƒˆč§£ę¶ˆć‚’ć—ć¾ć™ćŒć€Auto VacuumćÆćƒˆćƒ©ćƒ³ć‚¶ć‚Æć‚·ćƒ§ćƒ³ -> ć‚³ćƒŸćƒƒćƒˆć®ćŸć³ć«ćƒŽć‚¤ć‚ŗé™¤åŽ»ć‚’ć—ć¾ć™ćŒć€ćƒ•ćƒ©ć‚°ćƒ”ćƒ³ćƒˆč§£ę¶ˆćÆć—ć¾ć›ć‚“ć€‚

図ļ¼šAuto Vacuumčح定ćÆćƒ†ćƒ¼ćƒ–ćƒ«ä½œęˆå‰ć«

SQLite恮čŖ­ćæę›ø恍

Node.jsćŖć©ć®ć‚¢ćƒ—ćƒŖ恧SQLite恫ꎄē¶šć—ć¦ćƒ‡ćƒ¼ć‚æ悒čŖ­ćæę›øćć™ć‚‹å “åˆć€ćƒ”ć‚½ćƒƒćƒ‰ęÆŽć«čŖ­ćæę›øćć®ę§‹ę–‡ć‚’ę›ø恄恦恄悋ćØćƒ—ćƒ­ć‚°ćƒ©ćƒ ćŒå†—é•·ć«ćŖć£ć¦ć—ć¾ć†ć®ć§ć€é€šåøøćÆSELECT, INSERT, UPDATE, DELETEć®ä»£č”Øēš„ćŖ4ę§‹ę–‡ć«é–¢ć—ć¦ćÆé–¢ę•°åŒ–ć—ć¦ćŠć„ćŸć‚Šć€ć‚‚ć†äø€ę­©é€²ć‚ć¦ć‚Æćƒ©ć‚¹åŒ–ć—ć¦ćŠć„ć¦ä½æ恆ćØć€å†åˆ©ē”Øę€§ćŒé«˜ć¾ć£ć¦ć€č¦‹é€šć—ćŒč‰Æ恏ćŖć‚Šć¾ć™ć€‚

冒頭éƒØ分

Node.jsć®å “åˆć€äøŠčØ˜ć®ć‚³ćƒ¼ćƒ‰ć®ć‚ˆć†ć«äŗˆć‚ęŽ„ē¶šć™ć‚‹db.sqlite3ćƒ•ć‚”ć‚¤ćƒ«ć®å “ę‰€ć‚’ęŒ‡å®šć—ć€ęŽ„ē¶šć—ć¦ćŠćć‚ˆć†ć«ć—ć¾ć™ć€‚åŸŗęœ¬ēš„ć«å€‹äŗŗ恧ä½æć†ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć§ć‚ć‚‹ćŸć‚ć€ćƒžćƒ«ćƒćƒ¦ćƒ¼ć‚¶ć§åŒę™‚ę›øćč¾¼ćæ悒恙悋悈恆ćŖ悂恮恫ćÆē”Ø恄ćŖ恄恮恧ļ¼ˆć‚µćƒ¼ćƒć§ä½æć†å “åˆćÆåˆ„ć§ć™ćŒļ¼‰ć€č‡Ŗåˆ†ć®å “åˆćÆMySQLć®ę™‚ć®ć‚ˆć†ć«ćƒ­ćƒƒć‚Æć‚’č€ƒę…®ć—ćŸć‚Šć—ć¾ć›ć‚“ć€‚ć¾ćŸęš—å·åŒ–ć«ć¤ć„ć¦ć‚‚ćƒ‡ćƒ•ć‚©ćƒ«ćƒˆć§ćÆęœŖåƾåæœć§ć‚ć‚‹ćŸć‚ć€åˆ„恮ꉋꮵ悒ē”Øꄏ恙悋åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚

åæ…要ćŖę™‚ć«é–‹ć„ć¦ć€ćć—ć¦é–‰ć˜ć‚‹ćØć„ć†ć‚·ćƒ³ćƒ—ćƒ«ćŖ処ē†ć‚’4惑ć‚æćƒ¼ćƒ³ć«åæœć˜ć¦ä½œć£ć¦ć„ć¾ć™ļ¼ˆå®Ÿéš›ć«ćÆ2惑ć‚æćƒ¼ćƒ³č¾ŗć‚Šć¾ć§ēµ±åˆć§ćć¾ć™ćŒļ¼‰

ć‚¤ćƒ³ćƒ”ćƒ¢ćƒŖ化

仄äø‹ć®ć‚ˆć†ć«ć€:memory:ć‚’åŠ ćˆć‚‹ćØ态SQLiteć®ć‚¤ćƒ³ćƒ”ćƒ¢ćƒŖćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹åŒ–ćŒåÆčƒ½ć§ć™ć€‚

open_readwrite, open_create, open_readonly恮3ēØ®é”žć®ćƒ¢ćƒ¼ćƒ‰ćŒć‚ć‚Šć¾ć™ć€‚

åæ…要ćŖꙂ恫ꎄē¶šć—ēµ‚äŗ†ć™ć‚‹

ć‚¢ćƒ—ćƒŖ恧ä½æē”Øć™ć‚‹å “åˆć€åŸŗęœ¬ēš„ć«å€‹äŗŗćŖć®ć§ć€å†’é ­ć§sqliteć®ćƒ•ć‚”ć‚¤ćƒ«ć‚’čŖ­ćæč¾¼ćæé–‹ćć£ć±ćŖć—ć§ćć®ć¾ć¾é‹ē”Ø恙悋äŗ‹ćŒå¤šć„ć§ć™ćŒć€åæ…要ćŖꙂ恫恠恑ꎄē¶šć—恦态SQLå®Ÿč”Œå¾Œć«ćÆćć”ć‚“ćØć‚Æćƒ­ćƒ¼ć‚ŗć™ć‚‹å “åˆć«ćÆć€å†’é ­ć§ęŽ„ē¶šć—ć£ć±ćŖ恗恫恙悋恮恧ćÆćŖćć€éƒ½åŗ¦ć‚¤ćƒ³ć‚¹ć‚æćƒ³ć‚¹åŒ–ć—ć¦Closeć•ć›ć¾ć™ć€‚

ę¬”ć«ć¾ćŸęŽ„ē¶šć™ć‚‹å “合ćÆć€å†åŗ¦ć€new sqlite.Databaseć«ć¦ć‚¤ćƒ³ć‚¹ć‚æćƒ³ć‚¹åŒ–ć—ć¦ć‹ć‚‰å‡¦ē†ć‚’č”Œć†ć“ćØ恫ćŖć‚Šć¾ć™ć€‚

SELECT

SQLå®Ÿč”Œé–¢ę•°

ć‚Æć‚ØćƒŖć‚’å—ć‘å–ć£ć¦å®Ÿč”Œć—ć€ęˆåŠŸć—ćŸć‚‰rowsć«ćƒ¬ć‚³ćƒ¼ćƒ‰ćŒå…„ć£ć¦ć‚‹ć®ć§ć€callbackć§å‘¼ć³å‡ŗć—å…ƒćøćØčæ”ć—ć¦ć„ć¾ć™ć€‚SQLꖇ恤恄恦ćÆ仄äø‹ć®ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚ć‚‚ć”ć‚ć‚“ć€ćƒ“ćƒ„ćƒ¼ć«åÆ¾ć—ć¦SELECTꖇ悒ē™ŗč”Œć™ć‚‹ć“ćØ悂å‡ŗę„ć¾ć™ć€‚

å‘¼ć³å‡ŗć—å“

callbackć•ć‚Œć¦ććŸrowsć®å€¤ć‚’å–ć‚Šå‡ŗ恗态恝悌恞悌悒retmanćØć„ć†é€£ęƒ³é…åˆ—ć«ćƒ‡ćƒ¼ć‚æéƒØ分ćØ件ꕰćØć«ć‚ć‘ć¦å…„ć‚Œč¾¼ćæ态Electronć®å “åˆćÆćƒ¬ćƒ³ćƒ€ćƒ©å“ć«event.sender.sendć§é€ć£ć¦ć„ć¾ć™ć€‚

ęŒ‡å®šä»¶ę•°ćšć¤å–å¾—ć™ć‚‹

äø€åŗ¦ć«å¤§é‡ć®ćƒ‡ćƒ¼ć‚æć‚’å–å¾—ć™ć‚‹ćØćƒ—ćƒ­ć‚°ćƒ©ćƒ å“ć«ćØć£ć¦å°‘ć€…äøå…·åˆćŒå‡ŗć‚‹ć‚±ćƒ¼ć‚¹ćØć„ć†ć‚‚ć®ćŒć‚ć‚Šć¾ć™ć€‚ć„ććŖ悊å…Øä»¶å–å¾—ć§ć™ćØč”Øē¤ŗć™ć‚‹ć¾ć§ć«ę™‚é–“ćŒęŽ›ć‹ć‚‹ć®ć§ć€é…å»¶ćƒ­ćƒ¼ćƒ‰ćŖć©ć‚’ä½µē”Ø恗恦10000ä»¶ćšć¤å–å¾—ć—ć¦č”Øē¤ŗćŖ恩ćŖć©ć€‚ć“ć†ć„ć£ćŸć‚±ćƒ¼ć‚¹ć§ćÆ态ꬔ恮10000ä»¶ć‚’å–å¾—ć—ć¦ę—¢å­˜ć®ćƒ‡ćƒ¼ć‚æ恫čæ½åŠ ć™ć‚‹ćØć„ć£ćŸå‡¦ē†ć‚’č£…å‚™ć—ć¾ć™ćŒć€SQLiteå“ć§ć€Œę¬”ć®10000ä»¶ć‚’å‘¼ć³å‡ŗ恗怍ćØć„ć£ćŸć“ćØć‚’ć™ć‚‹ćŸć‚ć«ćÆ态offset叄ćØLimitå„ć‚’åˆ©ē”Øć—ć¾ć™ć€‚

äøŠčØ˜ć®ä¾‹ć®å “åˆć€offsetå¤‰ę•°ć«å€¤ć‚’å…„ć‚Œć‚‹ć“ćØć§ć€ćƒ‡ćƒ¼ć‚æć®å–å¾—ä½ē½®ļ¼ˆč”Œē•Ŗ号ļ¼‰ć‚’å¤‰ę›“å‡ŗę„ć‚‹ć‚ˆć†ć«ćŖć‚‹ć€‚åˆęœŸå€¤ćÆ0ćØ恗ꬔ恮1äø‡ä»¶ć‚’å–å¾—ć—ćŸć„ćŖ悉恰态offset恫ćÆ10000ć‚’å…„ć‚Œć‚‹ļ¼ˆ0ć‹ć‚‰ć‚¹ć‚æćƒ¼ćƒˆć—ć¦ć‚‹ē‚¹ć«ę³Øꄏļ¼‰ć€‚ć¤ć¾ć‚Šć“ć‚ŒćŒć€ćƒ‡ćƒ¼ć‚æć®å–å¾—é–‹å§‹ä½ē½®ćØćŖ悋怂

Limitå„ć§10000ä»¶ć‚’å–å¾—ć™ć‚‹ć‚ˆć†ć«åŒę™‚ć«åˆ¶é™ć‚’å…„ć‚ŒćŖ恄ćØ态offsetć®ä½ē½®ć‹ć‚‰å¾Œć‚ć®ćƒ‡ćƒ¼ć‚æ悒å…ØéƒØå–å¾—ć—ć¦ć—ć¾ć†ć®ć§ę³Øꄏ怂

INSERT

SQLå®Ÿč”Œé–¢ę•°

ćƒ¬ć‚³ćƒ¼ćƒ‰ć®čæ½åŠ ć®å “åˆć®å‡¦ē†ć§ć™ć€‚ē¶šć‘ć¦ć‚µćƒ–ćƒžć‚¹ć‚æć«ćƒ¬ć‚³ćƒ¼ćƒ‰ć‚’čæ½åŠ ć™ć‚‹å “åˆć‚’č€ƒę…®ć—ć¦ć€čæ½åŠ ę™‚恮Autoincrement恧č‡Ŗå‹•ć§ęŒæå…„ć•ć‚Œć‚‹IDć®ę•°å€¤ć‚’å–å¾—ć—ć¦čæ”ć™ć‚ˆć†ć«ć—ć¦ć„ć¾ć™ć€‚

SQLꖇćØčæ½åŠ ć™ć‚‹values恫恤恄恦ćÆ仄äø‹ć®ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚

valuesćÆé…åˆ—ć§ęø”ć™ć®ć§ć™ćŒć€äŗŒę¬”å…ƒé…åˆ—ć®å½¢ć§ęø”ć›ć°ć€ćƒćƒ«ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆćŒåÆčƒ½ć«ćŖć£ć¦ć„ć¾ć™ļ¼ˆä½†ć—态äø€åŗ¦ć«ę²¢å±±ć®ćƒ¬ć‚³ćƒ¼ćƒ‰ć‚’prepare恧čæ½åŠ ć™ć‚‹ćØNG恧态1回900ćƒ¬ć‚³ćƒ¼ćƒ‰ē؋åŗ¦ć®åˆ¶é™ćŒć‚ć‚‹ćæ恟恄ļ¼‰ć€‚

ä½†ć—ć€å¤§é‡ć®ćƒ¬ć‚³ćƒ¼ćƒ‰ć‚’ę™®é€šć«Insert恧1č”Œćšć¤å…„ć‚Œć¦ć„ććØćØ恦恤悂ćŖ恏遅恄恧恙怂

å‘¼ć³å‡ŗć—å“

å‘¼ć³å‡ŗć—å“ćÆäøŠčØ˜ć®é–¢ę•°ć‚’å‘¼ć³å‡ŗć—ć€å‡¦ē†ćŒēµ‚ć‚ć£ćŸć‚‰callbackć—ć¦ć‚‚ć‚‰ć†ć‚ˆć†ć«ēµ„ć‚“ć§ć„ć¾ć™ć€‚ret恫čæ½åŠ ć—ćŸćƒ¬ć‚³ćƒ¼ćƒ‰ć®ID恌čæ”ć£ć¦ćć‚‹ć®ć§ć€ćć‚Œć‚’å–å¾—ć—ć¦å¼•ćē¶šćć‚µćƒ–ćƒžć‚¹ć‚æćø恮čæ½åŠ å‡¦ē†ćøćØ恤ćŖć’ć¾ć™ć€‚

ćƒˆćƒ©ćƒ³ć‚¶ć‚Æć‚·ćƒ§ćƒ³å‡¦ē†

SQLiteć«ć‚‚ćƒˆćƒ©ćƒ³ć‚¶ć‚Æć‚·ćƒ§ćƒ³å‡¦ē†ćŒć‚悊态ē‰¹ć«Insert処ē†ć®å “合ćÆ态1č”Œćšć¤Insertć—ć¦ć„ććØ态

  • DBć‚Ŗćƒ¼ćƒ—ćƒ³
  • DBćøę›øćč¾¼ćæ
  • DBćøć‚³ćƒŸćƒƒćƒˆ

ć‚’ä½•åŗ¦ć‚‚ē¹°ć‚Ščæ”恙恓ćØ恫ćŖ悊态非åøøć«é…ć„ć§ć™ć€‚ćć“ć§ć€ćƒˆćƒ©ćƒ³ć‚¶ć‚Æć‚·ćƒ§ćƒ³å‡¦ē†ć‚’č”Œć†äŗ‹ć§äø€å›žć®DBć‚Ŗćƒ¼ćƒ—ćƒ³ćØć‚³ćƒŸćƒƒćƒˆć ć‘ć«ć—ć€é€£ē¶šć§ę›øćč¾¼ćæ処ē†ć‚’č”Œć‚ć›ć‚‹äŗ‹ć§é«˜é€ŸåŒ–å‡ŗę„ć¾ć™ļ¼ˆćŠć‚ˆć25,000č”Œć®ćƒ‡ćƒ¼ć‚æ恧1分ē؋ļ¼ˆ17ć‚«ćƒ©ćƒ ļ¼‰ļ¼‰ć€‚

åŸŗęœ¬ćÆ

  • db.run(“begin transaction”)ć§ćƒˆćƒ©ćƒ³ć‚¶ć‚Æć‚·ćƒ§ćƒ³é–‹å§‹
  • async.eachSeriesć®ćƒ«ćƒ¼ćƒ—å†…ć§ć€db.runć«ć¦é…åˆ—ćƒ‡ćƒ¼ć‚æ悒順ꬔčæ½åŠ ä½œę„­
  • db.run(“commit”)ć§ć‚³ćƒŸćƒƒćƒˆ
  • ć‚Øćƒ©ćƒ¼ćŒē™ŗē”Ÿć™ć‚‹ćØč‡Ŗå‹•ć§ćƒ­ćƒ¼ćƒ«ćƒćƒƒć‚Æ

ćØćŖć‚Šć¾ć™ć€‚

惐惫ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆ

惐惫ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆć®åŸŗęœ¬

通åøø态1å›žć®Insert処ē†ć§čæ½åŠ ć§ćć‚‹ćƒ¬ć‚³ćƒ¼ćƒ‰ćÆ1č”Œć®ćæ恧恙怂恗恋恗态1å›žć®Insert処ē†ć§č¤‡ę•°č”Œć®ćƒ¬ć‚³ćƒ¼ćƒ‰ć‚’äø€ę‹¬ć§å‡¦ē†ć™ć‚‹ć®ćŒćƒćƒ«ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆć€‚åŠ‡ēš„恫čæ½åŠ é€Ÿåŗ¦ćŒć‚¢ćƒƒćƒ—ć—ć¾ć™ć€‚SQL꧋ꖇćØ恗恦ćÆ

ćØć„ć£ćŸć‚ˆć†ć«ć€valuesä»„é™ć«ć€å€¤ć‚’ę ¼ē“ć—ćŸć‚‚ć®ć‚’ć€ć‚«ćƒ³ćƒžåŒŗåˆ‡ć‚Šć§äø¦ć¹ć¦ć¤ćŖć’ć‚Œć°ć€ćƒćƒ«ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆć«ćŖć‚Šć¾ć™ć€‚ć—ć‹ć—ć€ć‚ć¾ć‚Šć«ć‚‚å¤šćć®å€¤ć‚’ć¤ćŖ恒悋ćØ态too many sql variablećØ恄恆ć‚Øćƒ©ćƒ¼ćŒē™ŗē”Ÿć—ć¦ć—ć¾ć„ć¾ć™ļ¼ˆSQLiteć®åˆ¶é™ļ¼‰ć€‚ć“ć”ć‚‰ć®ć‚µć‚¤ćƒˆć«åˆ¶é™ć«ć¤ć„ć¦ć®čØ˜č¼‰ćŒć‚ć‚Šć¾ć™ć€‚v3.32ä»„å‰ć®SQLite恠ćØ999å€‹ć€ćć‚Œä»„é™ć ćØ32766å€‹ćŒćƒ‡ćƒ•ć‚©ćƒ«ćƒˆčØ­å®šć®ć‚ˆć†ć§ć™ć€‚ć“ć‚ŒćÆ态?恮éƒØåˆ†ćŒ999å€‹ćŒäøŠé™ćØ恄恆恓ćØ恧恙恭怂

恗恋恗态Node.js恧恓悌悒悄悍恆ćØ恙悋ćØValues恮éƒØåˆ†ć‚’ę§‹ēÆ‰ć™ć‚‹ć®ćŒé¢å€’ć§ć‚ć‚‹ćŸć‚ć€ä¾‹ćˆć°100å€‹ćšć¤ć«åŒŗåˆ†ć‘ć—ć¦ć€Insert Intoć‚’å®Ÿč”Œć™ć‚‹ć‚ˆć†ć«ć—ć€2ę¬”å…ƒé…åˆ—ćÆ1ę¬”å…ƒé…åˆ—ć«å¤‰ę›ć—ć¦ęø”ć™ć‚ˆć†ć«ć™ć‚‹ćØ恄恆惆ć‚Æ惋惃ć‚Æ恌stackoverflow恧ē“¹ä»‹ć•ć‚Œć¦ć„ć¾ć™ć€‚

2ę¬”å…ƒé…åˆ—ć‚’1ę¬”å…ƒé…åˆ—ć«ć—ć€ć¾ćŸćƒ¬ć‚³ćƒ¼ćƒ‰ć®ę•°ć ć‘åæ…要ćŖplaceholder悒ē”Øꄏ恙悋ćØ恄恆ē‚¹ćŒē‹¬ē‰¹ć§ć™ć€‚

100ćƒ¬ć‚³ćƒ¼ćƒ‰å˜ä½ć§ćƒćƒ«ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆ

SQLite恮Insert処ē†ć«ę–¼ć„恦态db.runćŒéžåŒęœŸć«å®Ÿč”Œć•ć‚Œć¦ć—ć¾ć†ć®ć§ć€ćƒ‡ćƒ¼ć‚æć®å‡¦ē†ć‚’č€ƒćˆć¦åŒęœŸēš„ć«å‡¦ē†ć‚’å®Ÿę–½ć—ćŖ恌悉态100ćƒ¬ć‚³ćƒ¼ćƒ‰å˜ä½ć§ćƒćƒ«ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆć‚’å®Ÿę–½ć—ć¦ćæ恟ꉀ态40,000č”Œć®ćƒ‡ćƒ¼ć‚æ恧恊悈恝15ē§’ē؋åŗ¦ć§å®Œäŗ†ļ¼ˆ17ć‚«ćƒ©ćƒ ļ¼‰ć§ćć¾ć—ćŸć€‚ć“ć‚Œć«ćÆElectronå“ć§ć“ć®å…Øćƒ‡ćƒ¼ć‚æ悒Cheetah Grid恧č”Øē¤ŗć™ć‚‹ę‰€ć¾ć§å«ć‚ć¦ć“ć®å€¤ćŖć®ć§ć€å½“åˆć®ćƒˆćƒ©ćƒ³ć‚¶ć‚Æć‚·ćƒ§ćƒ³ć‚‚ä½æć‚ćšć€ćƒćƒ«ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆć‚‚ć›ćšć«async.eachSeries恧1ä»¶ćšć¤ćƒˆćƒ­ćƒˆćƒ­ć‚¤ćƒ³ć‚µćƒ¼ćƒˆć—ć¦ć„ćŸę™‚ć‚ˆć‚Šć‚‚é„ć‹ć«é«˜é€Ÿć«Insert処ē†ćŒå‡ŗę„ć¾ć—ćŸć€‚

100ä»¶åˆ†ć‚’å–ć‚Šå‡ŗ恙splice恮項ē›®ć€‚äø€ē•Ŗęœ€å¾Œć®InsertꙂ恫ćÆ100ęŒ‡å®šć—ć¦ć®å “åˆć€å®Ÿéš›ć®é…åˆ—ć®ę•°ä»„äøŠć®å€¤ć‚’ęŒ‡å®šć—ć¦ć—ć¾ć£ć¦ć‚‹ć“ćØ恫ćŖć‚Šć¾ć™ćŒć€å–å¾—ć•ć‚Œć‚‹temparrayå¤‰ę•°ć«ćÆćć”ć‚“ćØꮋ悊恮ęœŖ処ē†ć®é…åˆ—åˆ†ć ć‘å–ć‚Šå‡ŗć›ć¦ć„ć¾ć™ć€‚ć‚Øćƒ©ćƒ¼ć‚‚å‡ŗćšę®‹ć‚Šć®é…åˆ—ę•°ć‚’ę°—ć«ć™ć‚‹ć“ćØćŖćåˆ‡ć‚Šå‡ŗć›ć‚‹ć®ć§ć€éžåøø恫ä¾æåˆ©ć§ć™ć€‚splicećÆsplice(0,100)恧态0ē•Ŗ恋悉100個ē›®ć¾ć§ć®é…åˆ—ć‚’å–ć‚Šå‡ŗ恙恓ćØ恫ćŖ悊态arrayć‹ć‚‰é™¤åŽ»ć•ć‚Œć¾ć™ć®ć§ć€ę¬”ć®ć‚æćƒ¼ćƒ³ć§ć‚‚splice(0,100)恧ꬔ恮200å€‹ć‚’å–ć‚Šå‡ŗć›ć¾ć™ć€‚

UPDATE

SQLå®Ÿč”Œé–¢ę•°

ćƒ¬ć‚³ćƒ¼ćƒ‰ć®ę›“ę–°å‡¦ē†ć®ę™‚ć®é–¢ę•°ć§ć™ć€‚åŸŗęœ¬ćÆę›“ę–°ćŒęˆåŠŸć—ćŸć‹ć©ć†ć‹ć ć‘ć‚’å‘¼ć³å‡ŗć—å…ƒćøćØčæ”ć—ć¾ć™ć€‚SQLꖇćØvalues恫恤恄恦ćÆ仄äø‹ć®ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚

Values恫恤恄恦ćÆ态Insert処ē†åŒę§˜ć«ćƒćƒ«ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆå‡¦ē†ć‚’č”Œćˆć°é«˜é€Ÿć‚¢ćƒƒćƒ—ćƒ‡ćƒ¼ćƒˆć‚’å®Ÿč”ŒåÆčƒ½ć§ć™ć€‚

å‘¼ć³å‡ŗć—å“

å‘¼ć³å‡ŗć—å“ćÆ処ē†ćŒå®Œäŗ†ć—ćŸć‚‰OK恠恑悒čæ”ć™ć‚ˆć†ć«ć—ć¦ć„ć¾ć™ć€‚ć‚Øćƒ©ćƒ¼ę™‚ć«ćÆćƒ€ć‚¤ć‚¢ćƒ­ć‚°č”Øē¤ŗć‚’ć—ć¦å‡¦ē†ć‚’ēµ‚äŗ†ć—ć¾ć™ć€‚

ä»–ć®ćƒ†ćƒ¼ćƒ–ćƒ«ćØJOIN恗恦UPDATE

MySQL悄AccessćŖ恩恧ćÆę™®é€šć«ć§ćć‚‹ć“ćØćŖć®ć§ć™ćŒć€2恤仄äøŠć®ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’JOINć—ć¦ćć®å€¤ć‚’å…ƒć«UPDATE恙悋ćØ恄恆恓ćØ恌态SQLiteć®å “åˆå®Ÿč”Œć™ć‚‹ć“ćØćŒć§ćć¾ć›ć‚“ć€‚ä¾‹ćˆć°ä»„äø‹ć®ć‚ˆć†ćŖSQLꖇćÆå®Ÿč”ŒćŒå‡ŗę„ćŖ恄恮恧恙怂ēµę§‹ä½æ恆惆ć‚Æ惋惃ć‚ÆćŖć®ć§ć€ć“ć®ć¾ć¾ć ćØ非åøøć«å›°ć‚Šć¾ć™ć€‚

ā–¼ä»„äø‹ć®ä¾‹ćÆtslog恮eventć®å€¤ć‚’tslog.workdate<->holiday_public.hdate2ć§é€£ēµć—恦态holiday_public恮hname恧ꛓꖰ恙悋ć‚Æć‚ØćƒŖ

StackOverflowć®č§£ę±ŗę³•ć«ć‚ˆć‚‹ćØć€ć“ć®å “åˆć€å€¤ć‚’SETć™ć‚‹ć‚«ćƒ©ćƒ ć«åÆ¾ć—ć¦ć‚µćƒ–ć‚Æć‚ØćƒŖć‚’å®Ÿč”Œć—ć€whereę”ä»¶ć«EXISTSå„ć§ć‚‚åŒć˜ć‚ˆć†ćŖć‚µćƒ–ć‚Æć‚ØćƒŖć‚’å®Ÿč”Œć™ć‚‹ć“ćØ恧态äøŠčØ˜ć®UPDATEꖇćØåŒć˜ēµęžœć‚’å¾—ć‚‰ć‚Œć‚‹ćØ恮恓ćØć§ć€å®Ÿč”Œć—ć¦ćæć¾ć—ćŸćŒč¦‹äŗ‹ć«ć‚¢ćƒƒćƒ—ćƒ‡ćƒ¼ćƒˆå‡ŗę„ć¾ć—ćŸć€‚

DELETE

SQLå®Ÿč”Œé–¢ę•°

ę›“ę–°ę™‚å‡¦ē†ćØę®†ć©åŒć˜ćŖ恮恧态UPDATEćØDELETEćÆäø€å€‹ć®é–¢ę•°ćØ恗恦悂č‰Æć„ć®ć§ć™ćŒć€UPDATEć®å “åˆćÆ今回ćÆ利ē”Øć—ć¦ć„ć¾ć›ć‚“ćŒć€Bulk Updateć®å‡¦ē†ć‚‚å­˜åœØć—å¾—ć‚‹ć®ć§ć€Transaction処ē†ć‚’č€ƒę…®ć—ć¦ć€åˆ„ć«åˆ†ć‘ć¦ć„ć¾ć™ć€‚SQLꖇćØ恗恦ćÆ仄äø‹ć®ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚

å‘¼ć³å‡ŗć—å“

åŸŗęœ¬ēš„恫ćÆUPDATEę–‡ć®ę™‚ć®é–¢ę•°å‡¦ē†ćØåŒć˜ć€‚

ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’ę–°č¦ä½œęˆć™ć‚‹

ć‚¢ćƒ—ćƒŖć®ć‚¢ćƒ—ćƒ‡ę™‚ć«éŽåŽ»ć®ē‰ˆć«SQLiteć®ćƒ•ć‚”ć‚¤ćƒ«ć‚’äøŠę›ø恍恙悋悈恆ćŖ恓ćØć‚’ć—ć¦ć—ć¾ć†ćØćƒ‡ćƒ¼ć‚æćŒę¶ˆćˆć¦ć—ć¾ć„ć¾ć™ć€‚ćć“ć§ć€ę—¢å­˜ć®DB恫åÆ¾ć—ć¦ćƒ†ćƒ¼ćƒ–ćƒ«ć®ęœ‰ē„”惁悧惃ć‚Æļ¼ˆå¾Œčæ°ļ¼‰ć‚’č”Œć„ć€ćŖć‹ć£ćŸå “åˆć«ćÆę–°č¦ć«ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’ä½œć£ć¦ć‚ć’ćŖ恄ćØć‚¢ćƒ—ćƒŖ恮運ē”Ø恌恧恍ćŖ恏ćŖć‚Šć¾ć™ć€‚ćØć„ć£ćŸć‚ˆć†ćŖć‚·ćƒ¼ćƒ³ć‚„č†Ø大ćŖćƒ‡ćƒ¼ć‚æć‚’ę–°č¦ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć«åˆ‡ć‚Šå‡ŗć—ć¦åˆ†å‰²ć™ć‚‹ć‚ˆć†ćŖć‚·ćƒ¼ćƒ³ć§ć‚‚ä½æć†ć®ćŒć€Œćƒ†ćƒ¼ćƒ–ćƒ«ć®ę–°č¦ä½œęˆć€ć€‚ä½œęˆę™‚ć«ćÆćƒ†ćƒ¼ćƒ–ćƒ«åć€åˆ—ć®åå‰ć€ćƒ‡ćƒ¼ć‚æåž‹ć®ęŒ‡å®šćŒåæ…要恫ćŖć‚Šć¾ć™ļ¼ˆćƒ‡ćƒ•ć‚©ćƒ«ćƒˆå€¤ć®ć‚»ćƒƒćƒˆć‚‚å‡ŗę„ć¾ć™ļ¼‰

  • Create Tableꖇ悒ä½æć£ć¦ę–°č¦ć«ä½œęˆć—ć¾ć™ć€‚
  • ‘列名’ åž‹ć€€ćØć„ć£ćŸå½¢ć§ć‚«ćƒ³ćƒžåŒŗåˆ‡ć‚Šć§åˆ—ć‚’ęŒ‡å®šć—ć¦ć‚†ćć¾ć™ć€‚
  • ID列ē­‰ć®å “合ćÆ态Primary keyć®ęŒ‡å®šćŒåæ…要äø”恤态Autoincrementć®ęŒ‡å®šć‚’ć™ć‚‹ć®ćŒå®šēŸ³ć§ć™ć€‚
  • db.run恧ć‚Æć‚ØćƒŖę–‡ć‚’å®Ÿč”Œć™ć‚‹ćØćƒ†ćƒ¼ćƒ–ćƒ«ćŒä½œęˆć•ć‚Œć¦äæå­˜ć•ć‚Œć¾ć™ć€‚

åˆ—ć‚’ę–°č¦ć«čæ½åŠ ć™ć‚‹

ćƒ†ćƒ¼ćƒ–ćƒ«ć®ę–°č¦čæ½åŠ ć®ä»–ć«ć‚‚éŽåŽ»ć®ć‚¢ćƒ—ćƒŖćØ恮äŗ’ę›ę€§ć®ē‚ŗćŖ恩悒äø»ćŖē›®ēš„ćØć—ć¦ę–°č¦ć«åˆ—ć‚’čæ½åŠ ć™ć‚‹ć‚±ćƒ¼ć‚¹ćŒć‚ć‚Šć¾ć™ć€‚åˆ—ć®čæ½åŠ ć ć‘恧ćŖćå‰Šé™¤ć‚„åž‹ć®å¤‰ę›“ćŖć©ę§˜ć€…ćŖćƒ†ćƒ¼ćƒ–ćƒ«ę§‹é€ ć®å¤‰ę›“ć‚’č”Œć†å “åˆć«ä½æć†ć®ćŒć€ŒAlterę–‡ć€ć§ć™ć€‚ä½†ć—ć€SQLiteć®å “åˆćÆ仄äø‹ć®ć‚ˆć†ćŖåˆ¶é™ćŒć‚ć‚Šć¾ć™ć€‚

  • åˆ—ć®čæ½åŠ ćŖ恩ćÆäø€åŗ¦ć«č¤‡ę•°ć®åˆ—ć‚’čæ½åŠ ć§ććšć€ļ¼‘åˆ—ćšć¤čæ½åŠ ć™ć‚‹äŗ‹ć«ćŖ悋
  • alter table ļ½ž modify ļ½žćØć„ć£ćŸę„Ÿć˜ć§ć€ć‚«ćƒ©ćƒ ę§‹ęˆć®å¤‰ę›“ćÆå‡ŗę„ćŖ恄怂
  • Primary Keyć®åˆ—ćÆå¤‰ę›“å‡ŗę„ćŖć„ć—ć€ę–°č¦ć«čæ½åŠ ć‚‚å‡ŗę„ćŖ恄
  • uniqueęŒ‡å®šć‚‚å‡ŗę„ć¾ć›ć‚“
  • čæ½åŠ ę™‚ć«ćƒ‡ćƒ•ć‚©ćƒ«ćƒˆå€¤ć‚’ć‚»ćƒƒćƒˆć™ć‚‹äŗ‹ćŒå‡ŗę„ć‚‹ć‘ć‚Œć©ć€é–¢ę•°ćŖć©ć®ęŒ‡å®šćŖ恩ćÆå‡ŗę„ćŖ恄

ćŖ恩ćŖ恩怂ēµę§‹åˆ¶ē“„ćŒå¤šć„ć®ć§å¤šē”Ø恙悋恓ćØćÆćŖ恄ćØę€ć„ć¾ć™ć€‚ć“ć®å½“ćŸć‚Šć®åˆ¶ē“„ć‚’ć¾ćØć‚ćŸćƒšćƒ¼ć‚øćŒć“ć”ć‚‰ć«ć‚ć‚Šć¾ć™ć€‚ę—¢å­˜ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć«åŒåć®åˆ—ćƒć‚§ćƒƒć‚Æć‚’č”Œć£ćŸå¾Œć«ļ¼ˆå¾Œčæ°ļ¼‰ć€åˆ—ć‚’čæ½åŠ ć™ć‚‹SQLę–‡ć‚’å®Ÿč”Œć—ć¾ć™ć€‚

  • ļ¼’恤仄äøŠć®åˆ—čæ½åŠ ćÆ态äø€åˆ—恚恤čæ½åŠ ć—ć¦ć„ćäŗ‹ć«ćŖć‚Šć¾ć™ć€‚
  • Alter Table ļ½ž Add Column ļ½žå„悒ä½æć£ć¦ć€åˆ—åćØåž‹ć‚’ęœ€ä½Žć§ć‚‚ęŒ‡å®šć—ć¦å®Ÿč”Œć—ć¾ć™ć€‚

ē‰¹å®šć®åˆ—ć®å­˜åœØ꜉ē„”惁悧惃ć‚Æ

ć‚¢ćƒ—ćƒŖć®ćƒćƒ¼ć‚øćƒ§ćƒ³ć‚¢ćƒƒćƒ—ć‚’é‡ć­ć¦ć„ćå†…ć«ć€SQLiteć®ćƒ†ćƒ¼ćƒ–ćƒ«ę§‹é€ ć‚‚å¤‰ę›“ć™ć‚‹ć‚·ćƒ¼ćƒ³ćŒå‡ŗć¦ćć¾ć™ć€‚ćć†ćŖ悋ćØć€éŽåŽ»ć®ć‚¢ćƒ—ćƒŖćØćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć®äŗ’ę›ę€§ćŒå¤±ć‚ć‚Œć¦ć—ć¾ć†ć“ćØćŒć‚ć‚Šć¾ć™ć€‚ćć‚ŒćŒć€Œē‰¹å®šć®åˆ—ć®ęœ‰ē„”ć€ć€‚å¾Œć®ćƒćƒ¼ć‚øćƒ§ćƒ³ć§åˆ—ć‚’čæ½åŠ ć—ćŸć®ć§ć‚ć‚Œć°ć€ć‚¢ćƒ—ćƒ‡ę™‚ć«ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć‚‚äøŠę›øćć™ć‚Œć°å•é”Œē„”ć„ć§ć™ćŒćƒ‡ćƒ¼ć‚æć‚‚ę¶ˆćˆć¾ć™ć€‚ćØ恄恆恓ćØć§ć€åˆ—ć®ęœ‰ē„”悒惁悧惃ć‚Æć—ć¦ć•ć‚‰ć«ć€Œåˆ—ć‚’čæ½åŠ ć™ć‚‹ć€å‡¦ē†ć‚’č£…å‚™ć™ć‚Œć°ć€ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć‚’äøŠę›øćć›ćšć«ć€DBå“ć‚’å¼„ć‚‹äŗ‹ć§ćƒ¦ćƒ¼ć‚¶ć®ć‚¢ćƒ—ćƒ‡äøŠć®éšœå®³ć‚’å–ć‚Šé™¤ć‘ć¾ć™ć€‚

  • ćƒ†ćƒ¼ćƒ–ćƒ«ęƒ…å ±ć‚’å–å¾—ć™ć‚‹ćŸć‚ć®SQLćÆ态pragma table_infoćØć„ć†å¤‰ć‚ć£ćŸSQLć‚’åˆ©ē”Øć—ć¾ć™ć€‚ć“ć‚Œć§åˆ—ęƒ…å ±ćŒé€£ęƒ³é…åˆ—ć§čæ”ć£ć¦ćć¾ć™ć€‚
  • ćƒ«ćƒ¼ćƒ—ć§äø€å€‹ćšć¤åˆ—ć‚’ćƒć‚§ćƒƒć‚Æ恗恦态åÆ¾č±”ć®åˆ—ć®åå‰ćØäø€č‡“ć™ć‚‹ć‚‚ć®ćŒć‚ć£ćŸć‚‰ć€ćƒ•ćƒ©ć‚°ć‚’ē«‹ć¦ć¾ć™
  • ćƒ•ćƒ©ć‚°ćŒå»ŗć£ć¦ć‚‹å “åˆćÆåˆ—ćŒå­˜åœØć™ć‚‹ć®ć§ć€å‡¦ē†ć‚’恛恚态ćŖć„å “åˆć«ćÆä¾‹ćˆć°åˆ—čæ½åŠ ć®å‡¦ē†ć‚’čæ½čØ˜ć—ć¾ć™ć€‚

図ļ¼šåˆ—ć®åå‰ć‚„åž‹ćŒć‚ć‹ć‚‹

åÆ¾č±”ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć®å­˜åœØ꜉ē„”惁悧惃ć‚Æ

Node.jsćŖć©ć®ćƒ—ćƒ­ć‚°ćƒ©ćƒ ć§ć€ä»–ć®SQLite3ć®ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć‚’ć‚¤ćƒ³ćƒćƒ¼ćƒˆć—ć¦å…„ć‚Œę›æ恈悋ćØć„ć£ćŸä»•ēµ„ćæć®å “åˆć€ćƒćƒ¼ć‚øćƒ§ćƒ³ć‚’é‡ć­ć‚‹ć”ćØć«ć€å¤ć„ćƒćƒƒć‚Æć‚¢ćƒƒćƒ—ć®db.sqlite3ćƒ•ć‚”ć‚¤ćƒ«ć«ćÆ存åœØ恗ćŖć„ćƒ†ćƒ¼ćƒ–ćƒ«ćØć„ć†ć‚‚ć®ćŒå‡ŗę„ć¦ć„ćć“ćØć‚‚ć‚ć‚‹ć§ć—ć‚‡ć†ć€‚ć—ć‹ć—ć€å½“ē„¶ć®ć‚ˆć†ć«ę™®é€šć«ć‚¤ćƒ³ćƒćƒ¼ćƒˆå‡¦ē†ć‚’ć‚³ćƒ¼ćƒ‰ć§čؘčæ°ć—ć¦ć—ć¾ć†ćØć€å­˜åœØ恗ćŖć„ćƒ†ćƒ¼ćƒ–ćƒ«ć«ęŽ„ē¶šć—ć¦ćƒ‡ćƒ¼ć‚æć‚’å–ć‚Šč¾¼ć‚‚ć†ćØ恗恦ć‚Øćƒ©ćƒ¼ćŒē™ŗē”Ÿć™ć‚‹äŗ‹ć«ćŖć‚Šć¾ć™ć€‚

恝恓恧态åÆ¾č±”ć®SQLite3ćƒ•ć‚”ć‚¤ćƒ«ć«ć€ŒåÆ¾č±”ćØćŖć‚‹ćƒ†ćƒ¼ćƒ–ćƒ«ćŒå­˜åœØ恗恦恄悋恋恩恆恋ļ¼Ÿć€ć‚’ćƒć‚§ćƒƒć‚Æ恙悋SQLꖇ悒ē™ŗč”Œć—ć¦ć€å­˜åœØ恗ćŖć‘ć‚Œć°å‡¦ē†ć‚’ć‚¹ćƒ«ćƒ¼ć™ć‚‹ć‚ˆć†ćŖ仕ēµ„ćæ恌åæ…要恫ćŖć‚Šć¾ć™ć€‚ć“ć®å “åˆć€ä»„äø‹ć®ć‚ˆć†ćŖSQLꖇ悒꧋ēÆ‰ć—ć€å­˜åœØ恙悌恰1ć€å­˜åœØ恗ćŖ恑悌恰0恌čæ”ć£ć¦ćć‚‹ć®ć§ć€ćć‚Œć‚’å…ƒć«å‡¦ē†ć‚’åˆ†å²ć•ć›ć‚‹äŗ‹ćŒåÆčƒ½ć§ć™ć€‚

  • SELECTꖇ恧ćÆCOUNTé–¢ę•°ć‚’ä½æć£ć¦ćƒ¬ć‚³ćƒ¼ćƒ‰ę•°ć‚’čæ”ć™ć‚ˆć†ć«ć—ć¦ć„ć¾ć™ć€‚
  • ꤜē“¢åÆ¾č±”ćÆč”Øå‘ćč¦‹ćˆćŖ恄ē®”ē†ē”Øćƒ†ćƒ¼ćƒ–ćƒ«ć§ć‚ć‚‹sqlite_masterćƒ†ćƒ¼ćƒ–ćƒ«ć«åÆ¾ć—ć¦ć‚Æć‚ØćƒŖ悒ē™ŗč”Œć—ć¦ć„ć¾ć™ć€‚
  • WHEREę”ä»¶ćÆ态type恧怌tableć€ć‚’ęŒ‡å®šć—ć¦ćƒ†ćƒ¼ćƒ–ćƒ«ć®ćæćØ恗态怌nameć€ć«ć¦ćƒ†ćƒ¼ćƒ–ćƒ«åć‚’ęŒ‡å®šć—ć¾ć™ļ¼ˆrec恫ćÆćƒ†ćƒ¼ćƒ–ćƒ«åć‚’å…„ć‚Œć¦ćŠćļ¼‰
  • č©²å½“ć™ć‚‹ćƒ†ćƒ¼ćƒ–ćƒ«åć®type恌tableć®ćƒ‡ćƒ¼ć‚æ恌恂悌恰态1恌čæ”ć‚Šć¾ć™ć€‚ćŖ恑悌恰0恌čæ”ć‚Šć¾ć™ć€‚
  • dbbackćÆć‚¤ćƒ³ćƒćƒ¼ćƒˆć™ć‚‹DB恫åÆ¾ć—ć¦ęŽ„ē¶šć—ć¦ć„ć‚‹ć‚¤ćƒ³ć‚¹ć‚æćƒ³ć‚¹ć§ć™ć€‚ćć‚Œć«åÆ¾ć—ć¦ć€db.get恫恦ć‚Æć‚ØćƒŖ悒ē™ŗč”Œć—ć¾ć™ć€‚
  • res恫ćÆ[{‘COUNT(*)’:1}]ćØć„ć£ćŸå€¤ćŒčæ”ć£ć¦ćć‚‹ć®ć§ć€countmanå¤‰ę•°ć§ćÆćć®å€¤ć®ćæć‚’å–ć‚Šå‡ŗć—ć¦ć„ć¾ć™ć€‚

図ļ¼šē®”ē†ē”Øćƒ†ćƒ¼ćƒ–ćƒ«ć‚’å‚ē…§ć™ć‚‹ćƒ†ć‚Æ惋惃ć‚Æ恧恙怂

Access恋悉ODBCꎄē¶š

SQLitećÆ大変ä¾æ利ćŖć‚“ć ć‘ć‚Œć©ć€ćƒ†ćƒ¼ćƒ–ćƒ«ć«ćƒ‡ćƒ¼ć‚æć‚’ęµć—č¾¼ć‚€ć§ć‚ć£ćŸć‚Šć€Access恮2GBć®åˆ¶é™ć‚’č¶…ćˆć‚‹ćŸć‚ć«ć‚‚SQLitećÆå½¹ć«ē«‹ć”ć¾ć™ć€‚ä½†ć—ć€ćƒ‡ćƒ¼ć‚æć‚’ęµć—č¾¼ć‚€ć«ćÆ态DB Browser for SQLitećÆć”ć‚‡ć£ćØä½æć„ć«ććć€ćƒ‡ćƒ¼ć‚æć®ć‚³ćƒ”ćƒšć§ć‚¤ć‚±ć‚‹Access + SQLite ODBC Driver恮ēµ„ćæåˆć‚ć›ćŒć€Windows恧ꉱ恆恫ćÆä¾æåˆ©ć§ć™ć€‚

仄äø‹ć®ę‰‹é †ć§ć€Access恋悉SQLite恫ꎄē¶šć—ćƒ‡ćƒ¼ć‚æ悒ꉱ恆äŗ‹ćŒåÆčƒ½ć§ć™ć€‚

  1. SQLite ODBC Driverć‚’ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ć—ć¦ć‚¤ćƒ³ć‚¹ćƒˆćƒ¼ćƒ«ć—ć¦ćŠćļ¼ˆ64bit恠ćØsqliteodbc_w64.exećŒćć‚Œć«ćŖ悋ļ¼‰
  2. Windowsć®ę¤œē“¢ēŖ“恋悉态ODBCćƒ‡ćƒ¼ć‚æć‚½ćƒ¼ć‚¹ć‚¢ćƒ‰ćƒŸćƒ‹ć‚¹ćƒˆćƒ¬ćƒ¼ć‚æ悒開恏ļ¼ˆä»Šå›žćÆ64bitē‰ˆļ¼‰
  3. ćƒ¦ćƒ¼ć‚¶DSNćŒé–‹ć‹ć‚Œć¦ć‚‹ēŠ¶ę…‹ćŖ恮恧态čæ½åŠ ć‚’ć‚ÆćƒŖ惃ć‚Æ
  4. SQLite3 ODBC Driver悒éøꊞ
  5. Data Sorce NamećÆé©å½“ć«ä»˜ć‘ć‚‹ć€‚Database NamećÆBrowse悒ć‚ÆćƒŖ惃ć‚Æ恗恦态ꎄē¶šć™ć‚‹db.sqlite3ćƒ•ć‚”ć‚¤ćƒ«ć‚’ęŒ‡å®šć™ć‚‹
  6. OK悒ć‚ÆćƒŖ惃ć‚Æ恙悋
  7. Accessć‚’čµ·å‹•ć™ć‚‹
  8. 外éƒØćƒ‡ćƒ¼ć‚æ -> ę–°ć—ć„ćƒ‡ćƒ¼ć‚æć‚½ćƒ¼ć‚¹ -> ä»–ć®ć‚½ćƒ¼ć‚¹ -> ODBCćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć‚’é–‹ć
  9. ćƒŖćƒ³ć‚Æćƒ†ćƒ¼ćƒ–ćƒ«ć‚’ä½œęˆć—ć¦ć€ć‚½ćƒ¼ć‚¹ćƒ‡ćƒ¼ć‚æ恫ćƒŖćƒ³ć‚Æć™ć‚‹ć«ćƒć‚§ćƒƒć‚Æć‚’å…„ć‚Œć¦OK悒ć‚ÆćƒŖ惃ć‚Æ
  10. ć‚³ćƒ³ćƒ”ćƒ„ćƒ¼ć‚æćƒ‡ćƒ¼ć‚æć‚½ćƒ¼ć‚¹ć‚’ć‚ÆćƒŖ惃ć‚Æ恗态5.ć§ä½œć£ćŸćƒ‡ćƒ¼ć‚æčØ­å®šć‚’éø悓恧OK悒ć‚ÆćƒŖ惃ć‚Æ
  11. ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹äø€č¦§ćŒå‡ŗć¦ćć‚‹ć®ć§ć€ćƒŖćƒ³ć‚Æ恙悋悂恮悒ć‚ÆćƒŖ惃ć‚Æ恗恦éø恶
  12. ćƒŖćƒ³ć‚Æćƒ†ćƒ¼ćƒ–ćƒ«ćŒč²¼ć‚‰ć‚Œć‚‹ć®ć§ć€å¾ŒćÆå„½ććŖć‚ˆć†ć«ę“ä½œć™ć‚‹

Access恧ć‚Æć‚ØćƒŖć‚’ä½œć‚Šć€ćć®SQLꖇćÆćć®ć¾ć¾DB Browser for SQLite恧悂ä½æćˆćŸć‚Šć™ć‚‹ć®ć§ć€Viewć‚’ä½œć£ćŸć‚Šć™ć‚‹ę™‚ć«ć‚‚Access恮UIćÆå½¹ć«ē«‹ć”ć¾ć™ć€‚

ć¾ćŸć€ć‚³ćƒ”ćƒšć§ćƒ‡ćƒ¼ć‚æć‚’ęµć—č¾¼ć‚ć‚‹äøŠć«ć€SQLiteć®å “åˆćÆaccdbćƒ•ć‚”ć‚¤ćƒ«ć®ć‚ˆć†ćŖ2GBć®åˆ¶é™ćŒē„”ć„ć®ć§ć€å¤§é‡ć®ćƒ‡ćƒ¼ć‚æć§ć“ć®åˆ¶é™ć«å¼•ć£ć‹ć‹ć£ć¦ć‚‹ć‚±ćƒ¼ć‚¹ć§ć‚‚ęœ‰åŠ¹ćŖꉋꮵ恫ćŖć‚Šć¾ć™ć€‚

VBAć§ę‰‹å‹•ć§ęŽ„ē¶šć™ć‚‹å “åˆć«ćÆ态仄äø‹ć®ć‚ˆć†ćŖꎄē¶šę–‡å­—åˆ—ć‚’ä½œć‚‹äŗ‹ć§ęŽ„ē¶šćŒåÆčƒ½ć§ć™ļ¼ˆActiveX Data Object 6.1 Libraryē­‰ć‚’参ē…§čØ­å®šć§ęŒ‡å®šć—ć¦ćŠćåæ…č¦ćŒć‚ć‚Šć¾ć™ļ¼‰

図ļ¼šć‚»ćƒƒćƒˆć‚¢ćƒƒćƒ—ćÆč‡³ć£ć¦ć‚·ćƒ³ćƒ—ćƒ«

図ļ¼šćƒŖćƒ³ć‚Æć™ć‚‹ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’éø恶

他恮DB恋悉č‡Ŗčŗ«ć®DBć«ćƒ‡ćƒ¼ć‚æć‚’ć‚³ćƒ”ćƒ¼ć™ć‚‹

äŗ‹å‰ęŗ–å‚™

SQLitećÆå½“ćŸć‚Šå‰ć§ć™ćŒć€Accessć®ć‚ˆć†ćŖćƒŖćƒ³ć‚Æćƒ†ćƒ¼ćƒ–ćƒ«ćŒä½æ恈悋悏恑恧ćÆćŖ恄恮恧态他恮sqlitećƒ•ć‚”ć‚¤ćƒ«ć«å…„ć£ć¦ć‚‹ćƒ‡ćƒ¼ć‚æ悒č‡Ŗčŗ«ć®sqlitećƒ•ć‚”ć‚¤ćƒ«ćøćƒ‡ćƒ¼ć‚æć‚’ć‚³ćƒ”ćƒ¼ć™ć‚‹ć«ćÆ惭ć‚ø惃ć‚Æ悒ē”Øę„ć—ć¦ć‚ć’ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚

ꦂ要悒čØ€ćˆć°ć€

  1. 他恮DB恫åÆ¾ć—ć¦SELECTć§ćƒ†ćƒ¼ćƒ–ćƒ«ćƒ‡ćƒ¼ć‚æć‚’å–å¾—ć—ć€å¤‰ę•°ć«ę ¼ē“ć™ć‚‹
  2. ę ¼ē“ć—ćŸćƒ‡ćƒ¼ć‚æļ¼ˆJSON形式ļ¼‰ć‚’ć€ćƒćƒ«ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆć§č‡Ŗčŗ«ć®DBćøćØINSERT恙悋
  3. 恓恮Ꙃ态SELECTć™ć‚‹ćƒ†ćƒ¼ćƒ–ćƒ«ćŒč¤‡ę•°ć‚ć£ć¦ć€å„ć€…ć‚«ćƒ©ćƒ ćŒē•°ćŖć‚‹å “åˆć€ę±Žē”Øēš„ćŖ惭ć‚ø惃ć‚Æ恌åæ…é ˆćØćŖ悋ļ¼ˆć§ćŖ恄ćØć€ćƒ†ćƒ¼ćƒ–ćƒ«ęÆŽć«ćƒ­ć‚ø惃ć‚Æ悒ēµ„ć‚€ē¾½ē›®ć«ćŖ悋ļ¼‰

ćØ恄恆恓ćØ恫ćŖć‚‹ć®ć§ć™ćŒć€ćŖ恋ćŖć‹é¢å€’ćŖ惭ć‚ø惃ć‚Æ悒꧋ēÆ‰ć™ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚ć“ć®ä»•ēµ„ćÆäø»ć«č‡Ŗčŗ«ć®ć‚¢ćƒ—ćƒŖ恮DB惐惃ć‚Æć‚¢ćƒƒćƒ—&å¾©å…ƒę©Ÿčƒ½ć‚’å®Ÿč£…ć™ć‚‹ć®ć«åæ…要ćŖę©Ÿčƒ½ćŖć®ć§ć€ć—ć£ć‹ć‚ŠćØ꧋ēÆ‰ć—ć¦ć‚ć’ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚

ä»Šå›žć€DB惐惃ć‚Æć‚¢ćƒƒćƒ—ę™‚ć«ćÆdb.sqlite3ć‚’ć¾ć‚‹ć”ćØęš—å·åŒ–ZIP恧å›ŗć‚ć¦ć€å¾©å…ƒę™‚ćÆč§£å‡ć—äøŠčØ˜ć®ćƒ—ćƒ­ć‚»ć‚¹ć§č‡Ŗčŗ«ć®DBćø惐惫ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆć™ć‚‹å‡¦ē†ć‚’ę›ø恄恦ćæć¾ć—ćŸć€‚äŗ‹å‰ć«ć„ćć¤ć‹ć®ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć‚’čæ½åŠ ć™ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚

  • archiver – ZIP圧ēø®ć™ć‚‹ē‚ŗć®ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«
  • 7zip-bin – ZIPč§£å‡ę™‚ć«ä½æē”Øć™ć‚‹ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć€‚7zipåƾåæœ
  • node-7z – Node.js恧7zip悒ꉱ恆ē‚ŗć®ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«
  • archiver-zip-encryptable – archiverćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć§ęš—å·åŒ–ć‚’ę‰±ć†ē‚ŗć®ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«
  • date-utils – ä»Šå›žćƒ•ć‚”ć‚¤ćƒ«åć‚’ę—„ä»˜ć§ä½œć‚‹ć®ć§ę—„ä»˜ć‚’ę‰±ć†ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ćØ恗恦ꎔē”Ø

äøŠčØ˜ć®ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć‚’npmć§ć‚¤ćƒ³ć‚¹ćƒˆćƒ¼ćƒ«ć—ć¦ćŠćć€index.jsć®å†’é ­ć§ä»„äø‹ć®ć‚ˆć†ć«å‘¼ć³å‡ŗć—ć¦ćŠćć¾ć™ć€‚

ā€»node-7zć§ć‚‚åœ§ēø®ćÆåÆčƒ½ćŖ恮恧态archiver悒ä½æ悏恚态node-7zć§åœ§ēø®ć™ć‚‹é–¢ę•°ć‚’ä½œć‚‹ć®ć‚‚č‰Æ恄恧恙怂

ć‚½ćƒ¼ć‚¹ć‚³ćƒ¼ćƒ‰

ä»Šå›žć®ć‚³ćƒ¼ćƒ‰ćÆElectronć‹ć‚‰å‘¼ć³å‡ŗć—ć¦åˆ©ē”Øć—ć¦ć„ć¾ć™ć€‚

惐惃ć‚Æć‚¢ćƒƒćƒ—ę™‚

惐惃ć‚Æć‚¢ćƒƒćƒ—ę™‚ć®åœ§ēø®å‡¦ē†ćÆćć“ć¾ć§é›£ć—ćć‚ć‚Šć¾ć›ć‚“ć€‚äæå­˜å “ę‰€ć‚’ęŒ‡å®šć—ć¦åœ§ēø®ć‚’å®Ÿč”Œć™ć‚‹ć ć‘ć€‚

  • ćƒ€ć‚¤ć‚¢ćƒ­ć‚°ć«ć¦ć€äæå­˜å “ę‰€ć‚’ęŒ‡å®šć™ć‚‹
  • zipmané–¢ę•°ć§ZIP圧ēø®ć‚’č”Œć‚ć›ć¦ć„ć¾ć™ć€‚ć“ć®ę™‚ć€ćƒ•ć‚”ć‚¤ćƒ«åć‚’ę—„ä»˜ć§ē”Ÿęˆć—态passwordć§ęš—å·åŒ–ć®ćƒ•ćƒ¬ćƒ¼ć‚ŗć‚’ęŒ‡å®š
  • archive.fileć«ć¦ä»Šå›žćÆ単äø€ć®ćƒ•ć‚”ć‚¤ćƒ«ć‚’ęš—å·åŒ–ZIP恧å›ŗć‚ć¦ć„ć¾ć™ć€‚dbfile恫ćÆdb.sqlite3ćƒ•ć‚”ć‚¤ćƒ«ć®ćƒ•ćƒ«ćƒ‘ć‚¹ć‚’ęŒ‡å®šć—ć¦ć„ć¾ć™ć€‚
  • 圧ēø®ćÆarchive.finalizeć§å®Ÿč”Œć€‚å®Œäŗ†å¾Œć«output.on(“close”ć€€ä»„é™ćŒå‹•ćć€å‘¼ć³å‡ŗć—å…ƒćøcallbackć—ć¦ć„ć¾ć™
  • callback恙悋際恫ćÆ态ē”Ÿęˆć—ćŸę—„ä»˜ć®ćƒ•ć‚”ć‚¤ćƒ«åć‚’čæ”ć—ć¦ć‚ć’ć¦ć„ć¾ć™ć€‚

č§£å‡ę™‚

問锌ćÆęš—å·åŒ–ZIPć§åœ§ēø®ć•ć‚ŒćŸdb.sqlite3ć®ćƒ•ć‚”ć‚¤ćƒ«ć‚’č§£å‡ć—ć€äø­ć«å…„ć£ć¦ć‚‹ćƒ†ćƒ¼ćƒ–ćƒ«ć‚’äø€ć¤ćšć¤ę‹¾ć£ć¦ć€č‡Ŗčŗ«ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć«ćƒćƒ«ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆć§å‡¦ē†ć‚’ć—ć¾ć™ć€‚å‡¦ē†å¾Œć«ćÆč§£å‡ć—ćŸćƒ•ć‚”ć‚¤ćƒ«ć‚’å‰Šé™¤ć™ć‚‹ć®ć‚’åæ˜ć‚Œćšć«ć€‚

  • zipmelté–¢ę•°ćŒč§£å‡ć™ć‚‹ćƒ”ć‚¤ćƒ³é–¢ę•°ć§ć™ć€‚
  • č§£å‡å¾Œć«ćÆćƒ•ć‚”ć‚¤ćƒ«ć®ćƒ‘ć‚¹ć‚’ęŒć£ć¦ć€backimporté–¢ę•°ć«ęø”ć—ć¦ć„ć¾ć™ć€‚
  • č§£å‡ę™‚ć«7zipć®ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć§ęš—å·åŒ–č§£é™¤ć—č§£å‡ć‚’č”Œć£ć¦ć„ć¾ć™ć€‚
  • 今回ćÆč§£å‡å…ˆćÆćƒ‡ć‚¹ć‚Æćƒˆćƒƒćƒ—ć®ćƒ‘ć‚¹ć‚’ęŒ‡å®šć—ć¦ć„ć¾ć™ć€‚

惐惫ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆ

ć•ć¦ć€č§£å‡ć—ćŸdb.sqlite3恫ꎄē¶šć—态č‡Ŗčŗ«ć®db.sqlite3ćƒ•ć‚”ć‚¤ćƒ«ćøćÆAccessć®ć‚ˆć†ć«ćÆē°”å˜ć«č”Œćć¾ć›ć‚“ć€‚ć¾ć—ć¦ć‚„ć€ä»Šå›žć®ćƒćƒ«ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆć®å “åˆćÆćƒ†ćƒ¼ćƒ–ćƒ«ęÆŽć«ć‚«ćƒ©ćƒ ćÆē•°ćŖć‚Šć¾ć™ć—ć€å½“ē„¶placeholder恮ꕰ悂ē•°ćŖć‚Šć¾ć™ć€‚ć“ć‚Œć‚‰ć«åƾåæœć—恦äø€ę‹¬ć§ćƒˆćƒ©ćƒ³ć‚¶ć‚Æć‚·ćƒ§ćƒ³å‡¦ē†ć«ć¦é«˜é€Ÿć‚¤ćƒ³ć‚µćƒ¼ćƒˆå‡¦ē†ć‚’ćƒ†ćƒ¼ćƒ–ćƒ«ć®ę•°ć ć‘ē¹°ć‚Ščæ”恙åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚ć¾ćŸć€å‡¦ē†å¾ŒćÆć‚¤ćƒ³ćƒćƒ¼ćƒˆå…ƒć®db.sqlite3ćÆclose恗ćŖ恄ćØć€ć‚¢ćƒ—ćƒŖćŒęŽ“ć‚“ć ć¾ć¾ć®ēŠ¶ę…‹ć«ćŖć£ć¦ć—ć¾ć†ć®ć§ć€åæ…ćšćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć‚’é–‰ć˜ć‚‹å‡¦ē†ćŒåæ…要恧恙怂

  • ćƒ†ćƒ¼ćƒ–ćƒ«äø€č¦§ć®é…åˆ—ć‚’ć‚‚ć£ć¦å›žć—ć€ć¾ćšćÆč‡Ŗčŗ«ć®db.sqlite3ćƒ•ć‚”ć‚¤ćƒ«å†…ć®ćƒ‡ćƒ¼ć‚æ悒DELETEć—ć¾ć™ć€‚ć“ć‚Œć‚‰ćÆåŒęœŸēš„ć«å‡¦ē†ćŒåæ…要ćŖ恮恧态Promise悄async.eachSeriesć§é †ę¬”å‡¦ē†ć‚’ć•ć›ć¦ć„ć¾ć™ć€‚
  • DELETEå¾Œć€å„ćƒ†ćƒ¼ćƒ–ćƒ«ć«åÆ¾ć—ć¦SELECT恧å…Øćƒ‡ćƒ¼ć‚æć‚’å–å¾—ć€‚ćƒ‡ćƒ¼ć‚æä»¶ę•°ćŒ0ćŖ悉恰next()ć§ę¬”ć®ćƒ†ćƒ¼ćƒ–ćƒ«ć®å‡¦ē†ćøćØć‚¹ć‚­ćƒƒćƒ—ć™ć‚‹
  • ćƒ‡ćƒ¼ć‚æå–å¾—å¾Œć«ć‚«ćƒ©ćƒ äø€č¦§ć‚’columns恫ē”Ÿęˆć€‚åŒć˜ćinsertꖇ恧ä½æ恆placeholderć‚’ć‚«ćƒ©ćƒ ć®ę•°ć ć‘ē”Ÿęˆć—ć¦ćŠć
  • å–å¾—ćƒ‡ćƒ¼ć‚æćÆäø€č”Œćšć¤é…åˆ—ć«å¤‰ę›ć—ć¦arrayć«ę ¼ē“ć—ć¦ćŠć
  • querybaseć«ć¦ćƒ†ćƒ¼ćƒ–ćƒ«ć€ć‚«ćƒ©ćƒ ć‚’template꧋ꖇ恧ēµ„ć‚“ć§ćŠćć¾ć™ć€‚
  • 惐惫ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆć®å‡¦ē†ćÆć€å‰é …ć§čؘčæ°ć—ćŸćƒćƒ«ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆć®čؘčæ°ć‚’å°‘ć—ę”¹é€ ć—ć€ć‚Æć‚ØćƒŖćØćƒ—ćƒ¬ćƒ¼ć‚¹ćƒ›ćƒ«ćƒ€ć‚’čæ½åŠ ć§å¼•ę•°ć«ę‰‹ęø”ć™ć‚ˆć†ć«ć—ć¦ć„ć¾ć™ć€‚topgun2ćØć„ć†é–¢ę•°ćŒćƒćƒ«ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆć‚’å¼•ćå—ć‘ć¦ć„ć¾ć™ć€‚
  • 惐惫ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆćŒēµ‚ć‚ć£ćŸć‚‰ć€ć‚³ćƒŸćƒƒćƒˆ -> ć‚¤ćƒ³ćƒćƒ¼ćƒˆå…ƒć®DB恮ć‚Æćƒ­ćƒ¼ć‚ŗ処ē†ć‚’å®Ÿč”Œ
  • ć‚Æćƒ­ćƒ¼ć‚ŗå¾Œć«ć‚¤ćƒ³ćƒćƒ¼ćƒˆå…ƒć®db.sqlite3ć®ćƒ•ć‚”ć‚¤ćƒ«ćÆå‰Šé™¤ć‚’ć—ć¦ćŠć

ē‰¹ć«ć€å®Ÿéš›ć®ę„­å‹™ē”Øćƒ‡ćƒ¼ć‚æćŖć©ćŒå…„ć£ć¦ć‚‹å “åˆć«ćÆć€ćƒ¬ć‚³ćƒ¼ćƒ‰ę•°ćŒę•°äø‡ć‚’č¶…ćˆć¦å…„ć£ć¦ć‚‹åÆčƒ½ę€§ćŒć‚ć‚‹ćŸć‚ć€å¾©å…ƒę™‚ćÆ惐惫ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆå‡¦ē†ć§ćŖ恑悌恰态非åøøć«ę™‚é–“ćŒęŽ›ć‹ć£ć¦ć—ć¾ć†ć®ć§ć€ć“ć®ć‚ˆć†ćŖ걎ē”Øēš„ćŖ惐惫ć‚Æć‚¤ćƒ³ć‚µćƒ¼ćƒˆć®å®Ÿč£…ćÆåæ…要äøåÆꬠ恧恙怂

関連ćƒŖćƒ³ć‚Æ

å…±ęœ‰ć—ć¦ćæ悋ļ¼š

ć‚³ćƒ”ćƒ³ćƒˆć‚’ę®‹ć™

ćƒ”ćƒ¼ćƒ«ć‚¢ćƒ‰ćƒ¬ć‚¹ćŒå…¬é–‹ć•ć‚Œć‚‹ć“ćØćÆć‚ć‚Šć¾ć›ć‚“ć€‚ * ćŒä»˜ć„ć¦ć„ć‚‹ę¬„ćÆåæ…須項ē›®ć§ć™

ć“ć®ć‚µć‚¤ćƒˆćÆć‚¹ćƒ‘ćƒ ć‚’ä½Žęø›ć™ć‚‹ćŸć‚ć« Akismet 悒ä½æć£ć¦ć„ć¾ć™ć€‚ć‚³ćƒ”ćƒ³ćƒˆćƒ‡ćƒ¼ć‚æć®å‡¦ē†ę–¹ę³•ć®č©³ē“°ćÆć“ć”ć‚‰ć‚’ć”č¦§ćć ć•ć„ć€‚