w3resource

Airtable and SQLite integration for Seamless Data Sync


Using Airtable with SQLite for Data Synchronization

Airtable is a cloud-based platform for creating and sharing relational databases, while SQLite is a lightweight, serverless database engine. Combining Airtable and SQLite enables developers to leverage Airtable's user-friendly interface for data management while using SQLite for local storage and offline functionality. This integration is useful for applications requiring both cloud-based and local data synchronization.


Scenario Overview

  • Airtable: Used as a collaborative, cloud-based database.
  • SQLite: Used for local caching or offline access.
  • Use Case: Synchronize data between Airtable and SQLite to maintain consistent records both online and offline.

Prerequisites

    1. Airtable API Key: Required for accessing Airtable's REST API.

    2. Node.js Environment: For executing JavaScript code.

    3. SQLite3: Installed and available for use in your application.

Install the required libraries using npm:

npm install sqlite3 axios

Example Workflow: Sync Airtable to SQLite

Step 1: Fetch Data from Airtable

Code:

// Import required modules
const axios = require('axios');
const sqlite3 = require('sqlite3').verbose();

// Airtable API details
const baseId = 'your_airtable_base_id'; // Replace with your Airtable Base ID
const tableName = 'your_table_name';    // Replace with your Airtable table name
const apiKey = 'your_api_key';          // Replace with your Airtable API Key

// Airtable API URL
const airtableURL = `https://api.airtable.com/v0/${baseId}/${tableName}`;

// Function to fetch data from Airtable
async function fetchAirtableData() {
  try {
    const response = await axios.get(airtableURL, {
      headers: {
        Authorization: `Bearer ${apiKey}`,
      },
    });
    return response.data.records; // Return the records from Airtable
  } catch (error) {
    console.error('Error fetching Airtable data:', error.message);
  }
}

// Call the function
fetchAirtableData().then((records) => console.log(records));

Explanation:

  • This script fetches data from Airtable using its REST API.
  • Replace your_airtable_base_id, your_table_name, and your_api_key with actual Airtable credentials.
  • The axios.get function retrieves data, which is then logged for verification.

Step 2: Store Data in SQLite

Code:

// Initialize SQLite database
const db = new sqlite3.Database('local_database.db');

// Create a table to store Airtable data
db.run(`
  CREATE TABLE IF NOT EXISTS airtable_data (
    id TEXT PRIMARY KEY,
    name TEXT,
    email TEXT
  )
`, (err) => {
  if (err) console.error('Error creating table:', err.message);
});

// Function to insert data into SQLite
function insertIntoSQLite(records) {
  const insertStmt = db.prepare('INSERT OR REPLACE INTO airtable_data (id, name, email) VALUES (?, ?, ?)');

  records.forEach((record) => {
    const { id, fields } = record; // Extract ID and fields from Airtable record
    insertStmt.run(id, fields.Name, fields.Email); // Replace field keys as per Airtable structure
  });

  console.log('Data synchronized to SQLite');
}

// Fetch Airtable data and insert into SQLite
fetchAirtableData().then((records) => insertIntoSQLite(records));

Explanation:

  • Creates a local SQLite database and a table named airtable_data.
  • The INSERT OR REPLACE query ensures existing records are updated while new ones are added.
  • Data is fetched from Airtable and stored in SQLite for local use.

Step 3: Querying Data from SQLite

Code:

// Query data from SQLite
db.all('SELECT * FROM airtable_data', [], (err, rows) => {
  if (err) {
    console.error('Error querying data:', err.message);
    return;
  }

  console.log('SQLite Data:', rows);
});

Explanation:

  • Retrieves all records stored in the airtable_data table for offline usage.

Advantages of Airtable-SQLite Integration

    1. Cloud and Local Synchronization: Ensures data availability both online and offline.

    2. Ease of Use: Airtable offers a user-friendly interface, while SQLite provides seamless local data management.

    3. Lightweight Setup: Requires minimal infrastructure, making it suitable for small to medium-sized applications.


Error Handling

Ensure proper error handling during API calls and database operations.

Code:

try {
  // API or database operations
} catch (error) {
  console.error('Operation failed:', error.message);
}

Use Cases

    1. Hybrid Applications: Syncing data between cloud and local databases.

    2. Offline-First Applications: Providing offline functionality for mobile or desktop apps.

    3. Data Backup: Backing up Airtable data locally using SQLite.


Conclusion

The integration of Airtable and SQLite provides a robust solution for hybrid applications that require both cloud-based and offline database functionalities. With a straightforward setup, developers can create seamless workflows to keep data synchronized across both platforms.

Practical Guides to SQLite Snippets and Examples.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/sqlite/snippets/airtable-sqlite-sync.php