DEV Community

Cover image for นอนไม่หลับ ข้อมูลหาย 8 กู้คืน และย้ายข้อมูล
Thanawat Wongchai
Thanawat Wongchai

Posted on • Originally published at apidog.com

นอนไม่หลับ ข้อมูลหาย 8 กู้คืน และย้ายข้อมูล

สรุปโดยย่อ (fTL;DR)

หากคุณอัปเกรดเป็น Insomnia 8.0 แล้วไม่สามารถเข้าถึงคอลเลกชันของคุณได้ ข้อมูลของคุณอาจยังคงอยู่ในดิสก์ คู่มือนี้จะแนะนำขั้นตอนการค้นหา กู้คืนจากฐานข้อมูล SQLite และย้ายข้อมูลไปยัง Apidog หรือทางเลือกอื่น ๆ อย่างเป็นระบบ ดำเนินการทันที ก่อนติดตั้งอัปเดตเพิ่มเติมที่อาจเขียนทับไฟล์สำรองของคุณ

ลองใช้ Apidog วันนี้

💡Apidog เป็นแพลตฟอร์มพัฒนา API แบบครบวงจรฟรี สามารถนำเข้าคอลเลกชัน Insomnia ได้โดยตรงและจัดเก็บข้อมูลของคุณในเครื่องโดยไม่ต้องสร้างบัญชี ลองใช้ Apidog ฟรี ไม่ต้องใช้บัตรเครดิต

บทนำ

การอัปเดต Insomnia 8.0 (กันยายน 2023) บังคับให้เข้าสู่ระบบคลาวด์ หลายคนพบว่าเมื่อเปิดแอปฯ ขึ้นมา คอลเลกชันเก่าหายไป เหตุผลหลักคือ UI ใหม่ไม่แสดงข้อมูล local เดิม หากไม่ล็อกอิน Kong

หากข้อมูลสูญหายเพราะ scratch storage คุณอาจกู้คืนไม่ได้ แต่ในหลายกรณีไฟล์ SQLite ยังอยู่บนดิสก์ คู่มือนี้จะช่วยคุณตรวจสอบและกู้คืนข้อมูล (ทั้งผ่าน UI และฐานข้อมูลโดยตรง) พร้อมแนวทางป้องกันปัญหาในอนาคตด้วยการย้ายไปใช้เครื่องมือที่เน้น local-first

ขั้นตอนที่ 1: ค้นหาไฟล์ฐานข้อมูล Insomnia ที่มีอยู่ของคุณ

สำคัญ: ก่อนติดตั้งใหม่ สร้างบัญชี Kong หรือเปิด Insomnia อีกครั้ง ให้สำรองไฟล์ฐานข้อมูลก่อน

ตำแหน่งไฟล์สนับสนุนแอป Insomnia:

  • macOS: ~/Library/Application Support/Insomnia/
  • Windows: C:\Users\[Username]\AppData\Roaming\Insomnia\
  • Linux: ~/.config/Insomnia/

ค้นหาภายในไดเรกทอรีนี้:

  • insomnia.db (หลัก)
  • โฟลเดอร์ core/ ที่มีไฟล์ .db
  • โฟลเดอร์ workspaces/ (อาจมีไฟล์ JSON ส่งออก)

คัดลอกไดเรกทอรีทั้งหมด ไปยังที่ปลอดภัย อย่าข้ามขั้นตอนนี้ เพื่อป้องกันการเขียนทับ/ลบจากอัปเดตหรือรีอินสตอล

ขั้นตอนที่ 2: ลองกู้คืนผ่าน UI ของ Insomnia

หากยังไม่ได้ล็อกอิน Kong ให้ลองใช้ scratch storage:

  1. เปิด Insomnia จะเห็นหน้าจอเข้าสู่ระบบ
  2. มองหาปุ่ม/ลิงก์ “ใช้งานโดยไม่ใช้บัญชี” หรือ “ดำเนินการต่อด้วยที่เก็บข้อมูลในเครื่อง”
  3. หากเข้าได้ ให้ ส่งออก workspace ทั้งหมดทันที:
    • คลิกชื่อ workspace (แถบซ้าย)
    • เมนู workspace (สามจุด/รูปฟันเฟือง) → “Export”
    • เลือก “Insomnia v4 (JSON)”
    • บันทึกไฟล์
    • ทำซ้ำกับทุก workspace

ถ้าคุณล็อกอิน Kong ได้ workspace ที่ซิงค์ไว้จะถูกดึงมา — ส่งออกเช่นเดียวกัน

ขั้นตอนที่ 3: กู้คืนข้อมูลโดยตรงจากฐานข้อมูล SQLite

ถ้า UI กู้คืนไม่ได้ ให้สกัดข้อมูลด้วย DB Browser for SQLite:

ติดตั้ง DB Browser for SQLite

ดาวน์โหลดที่ sqlitebrowser.org (ฟรี รองรับทุกระบบปฏิบัติการ)

เปิดไฟล์ฐานข้อมูล

  • ไปที่ File > Open Database
  • เลือก insomnia.db หรือไฟล์ .db ในไดเรกทอรี Insomnia

สำรวจสคีมา

เน้นตาราง:

  • Workspace
  • RequestGroup
  • Request
  • Environment
  • Response (ประวัติการตอบกลับ)

ส่งออกข้อมูล

  • ไปที่ Browse Data
  • เลือกแต่ละตาราง → File > Export > Table as CSV
  • สำหรับคำขอ (requests) ดู field: name, url, method, headers (JSON), body

สร้างคอลเลกชันใหม่จากดิบ

คุณสามารถนำข้อมูล CSV ไปสร้างใหม่ หรือใช้ Python ดึงข้อมูลโดยตรง เช่น:

import sqlite3
import json

conn = sqlite3.connect('/path/to/insomnia.db')
cursor = conn.cursor()

cursor.execute("SELECT name, url, method, headers, body FROM Request")
rows = cursor.fetchall()

for row in rows:
    print(f"Name: {row[0]}")
    print(f"Method: {row[2]} {row[1]}")
    if row[3]:
        headers = json.loads(row[3])
        for h in headers:
            print(f"  Header: {h.get('name')}: {h.get('value')}")
    print()

conn.close()
Enter fullscreen mode Exit fullscreen mode

หมายเหตุ: ตรวจสอบชื่อ field ใน DB Browser ก่อน สคีมาแต่ละเวอร์ชันอาจต่างกัน

ขั้นตอนที่ 4: กู้คืนจากข้อมูลสำรองหากฐานข้อมูลเสียหาย

หากไฟล์เสียหาย ให้ลอง:

  • Time Machine/File History/Cloud Backup: กู้คืน snapshot/สำเนา Insomnia ก่อนอัปเดต จาก backup service หรือ disk image
  • ประวัติ Git: ถ้าเคย commit ไฟล์ส่งออกไว้ใน Git repository
  • ค้นหาไฟล์ JSON ส่งออก: ตรวจสอบโฟลเดอร์ Downloads หรือโปรเจกต์สำหรับไฟล์ .json ที่มี “insomnia” หรือ “_collection” ในชื่อ

ขั้นตอนที่ 5: ย้ายไปยัง Apidog

เมื่อได้ไฟล์ Insomnia v4 JSON แล้ว การนำเข้าข้อมูลไปยัง Apidog ใช้เวลาไม่กี่นาที

ขั้นตอนการนำเข้า

  1. เปิด Apidog และสร้างโปรเจกต์ใหม่
  2. เข้าเมนูตั้งค่าโปรเจกต์หรือเมนูนำเข้า (Import)
  3. เลือก “Import” → “Insomnia”
  4. อัปโหลดไฟล์ JSON
  5. Apidog จะดึง workspace, โฟลเดอร์, คำขอ, environment อัตโนมัติ

ข้อมูลที่ถ่ายโอนได้โดยตรง

  • HTTP requests (GET, POST, PUT, DELETE, PATCH)
  • Request headers
  • Request bodies (JSON, form-data, multipart)
  • URL parameters, path variables
  • Environment variables
  • โครงสร้างโฟลเดอร์

ตรวจสอบเองหลังนำเข้า

  • Pre/Post scripts (JavaScript) — อาจต้องแก้ไข syntax
  • Custom authentication (ที่ใช้ plugin)
  • Response test assertions — ต้องกำหนดใหม่ใน Apidog

ตรวจสอบ Environment:

หลังนำเข้า ยืนยันว่าค่าตัวแปร (base URL, API key, token) ถูกต้อง

การเข้าถึงของทีม:

Apidog รองรับ workspace แบบแชร์และ sync cloud เลือกเปิด/ปิด cloud sync ได้ตามต้องการ

ทดสอบ request:

สุ่มตรวจสอบคำขอ 5-6 รายการ เพื่อยืนยันการทำงานและการแทนค่าตัวแปร

การหลีกเลี่ยงปัญหานี้ในอนาคต

แนวปฏิบัติ

  • ส่งออกข้อมูลเป็นประจำ: กำหนด schedule export คอลเลกชันไป backup/Git ทุกเดือน
  • เลือกเครื่องมือ local-first: เช่น Apidog หรือ Bruno ที่บันทึกข้อมูลลงดิสก์โดยตรง
  • ตรวจสอบ changelog ก่อนอัปเกรด: อ่านรายละเอียดการเปลี่ยนแปลง schema/ตำแหน่งไฟล์ก่อน update version หลัก

คำถามที่พบบ่อย (FAQ)

Q: ฉันสามารถกู้คืนข้อมูล Insomnia ได้โดยไม่ต้องเข้าสู่ระบบ Kong หรือไม่?

A: ได้ หากไฟล์ฐานข้อมูลยังอยู่ ใช้ DB Browser for SQLite เปิดไฟล์ .db และส่งออกข้อมูลแต่ละตารางได้โดยตรง

Q: ควรใช้รูปแบบใดในการส่งออกข้อมูล Insomnia?

A: ใช้ Insomnia v4 JSON (รองรับโดย Apidog, Postman ฯลฯ)

Q: ตัวแปร environment จะถูกนำเข้า Apidog หรือไม่?

A: ส่วนใหญ่จะถูกดึงมาใน v4 JSON ตรวจสอบค่าหลังนำเข้า โดยเฉพาะ token ที่ sensitive

Q: ความแตกต่าง scratch storage ของ Insomnia กับ local storage อื่น ๆ?

A: Scratch storage เป็นโหมดสำรอง (reliability ต่ำ) ในขณะที่ Apidog/Bruno ใช้ local storage เป็นค่าเริ่มต้น ข้อมูลถูกเขียนลงดิสก์ทุกครั้ง

Q: ใช้ DB Browser for SQLite บน macOS ได้หรือไม่?

A: ได้ มีทั้ง installer และติดตั้งผ่าน Homebrew:

brew install db-browser-for-sqlite

Q: ย้ายข้อมูลจาก Insomnia ไป Apidog ใช้เวลานานแค่ไหน?

A: คอลเลกชัน 50–200 requests ใช้เวลานำเข้าน้อยกว่า 5 นาที อาจต้องใช้เวลาตรวจสอบ/ปรับสคริปต์เพิ่มเติมขึ้นอยู่กับความซับซ้อน

Top comments (0)