器库 ← 返回提示词库

AI / 编程与调试

Notion AI SQLite 数据表

Notion · notion-ai_20260322 · modules · notion · databases · data-source-sqlite-tables

# Data source SQLite tables (Notion scripting)

Use this doc when you need to query structured data from Notion data sources (databases) using `connections.notion.querySql`, or when you need to update page properties inside a data source using `connections.notion.updatePage`.

## 1) One data source = one SQLite table

- For each Notion data source URL `dataSourceUrl`, there is a corresponding SQLite table named exactly `dataSourceUrl`.
- Always double-quote the table name in SQL:
  - `SELECT * FROM "dataSourceUrl" LIMIT 10`

## 2) System columns (always present)

Every data source table includes:

- `url` (`TEXT`, unique): the page URL for the row (this is the primary identifier you should select).
- `createdTime` (`TEXT`): ISO-8601 datetime string for when the page was created.

## 3) Property columns (how Notion properties map to SQL)

### Column naming

- Column names are derived from the Notion property name (as seen in the data source schema). SQLite identifiers are case-insensitive, but you should still use the exact column names shown in the data source's `<sqlite-table>` definition.
- SQLite identifiers can contain spaces/special characters; always double-quote column names unless they're simple identifiers.
  - Example: `"Task Name"`, `"Status"`, `"Due Date"`
- If a property name conflicts with a system column name (`id`, `url`, `createdTime`), it is prefixed with `userDefined:`:
  - Example: `"userDefined:url"`

### Which properties become columns?

Only a subset of property types are queryable via SQL. Properties not listed below may not appear as columns; use `connections.notion.queryView` (or load/view the page) to access them.

### Property type → SQL type + semantics

The table contains one or more columns per property:

- **Title / Text / URL / Email / Phone**: Column type: `TEXT`. Value: plain string (may be empty or `NULL`).

- **Number**: Column type: `FLOAT`. Value: numeric (or `NULL`).

- **Checkbox**: Column type: `TEXT`. Values: `"__YES__"` = true, `"__NO__"` = false, `NULL` defaults to false.

- **Select**: Column type: `TEXT`. Value: one of the configured option names (or `NULL`).

- **Status**: Column type: `TEXT`. Value: one of the configured status option names (or `NULL`).

- **Multi-select**: Column type: `TEXT`. Value: JSON string encoding `Array<string>` (option names). Use `json_each` to filter/join:
  - `... WHERE EXISTS (SELECT 1 FROM json_each(t."Tags") WHERE value = 'Important')`

- **Person**: Column type: `TEXT`. Value: If limit 1: often a JSON string encoding a single user ID. Otherwise: typically a JSON string encoding `Array<string>` of user IDs. User IDs use the standard Notion user URL format: `"URL"`.

- **Files**: Column type: `TEXT`. Value: JSON string encoding `Array<string>` of file IDs.

- **Relation**: Column type: `TEXT`. Value: JSON string encoding related page URLs. Limit 1: often a JSON string of a single page URL. Otherwise: typically a JSON string encoding `Array<string>` of page URLs. To join, prefer `json_each` over the relation column when it's an array.

- **Created time / Last edited time**: Column type: `TEXT` (required / `NOT NULL`). Value: ISO-8601 datetime string, automatically set.

- **Date**: Expands into 3 columns:
  - `"date:<Property Name>:start"` (`TEXT`): ISO-8601 date/datetime string
  - `"date:<Property Name>:end"` (`TEXT`): ISO-8601 date/datetime string (must be `NULL` for single-date values)
  - `"date:<Property Name>:is_datetime"` (`INTEGER`): `1` for datetime, `0` for date, `NULL` defaults to `0`

- **Auto-increment ID**: Column type: `INTEGER`. Value: number (or `NULL`).

- **Created by / Last edited by**: Column type: `TEXT`. Value: user URL string (read-only, automatically set).

- **Place / Location**: Expands into 5 columns:
  - `"place:<Property Name>:address"` (`TEXT`): address string
  - `"place:<Property Name>:name"` (`TEXT`): optional place name
  - `"place:<Property Name>:latitude"` (`FLOAT`): latitude
  - `"place:<Property Name>:longitude"` (`FLOAT`): longitude
  - `"place:<Property Name>:google_place_id"` (`TEXT`): optional Google Place ID
  - Do not set the base property key directly; use expanded `place:` keys.

## 4) Querying data sources

### SQL queries (`connections.notion.querySql`)

You can query one or more data sources (tables) and join them. Always:

- Include `url` in your `SELECT` when possible.
- Double-quote table names and any column names with spaces/special characters.

Example: basic filter

```ts
const result = await connections.notion.querySql({
	dataSourceUrls: \["dataSourceUrl"\],
	query: `
    SELECT url, "Status", "Owner"
    FROM "dataSourceUrl"
    WHERE "Status" = ?
  `,
	params: \["In progress"\],
})
```

Example: join via relation column (relation stores JSON array of URLs)

```ts
const result = await connections.notion.querySql({
	dataSourceUrls: \["okrs", "teams"\],
	query: `
    SELECT o.url, o."Objective", t."Team Name"
    FROM "okrs" o
    JOIN "teams" t
      ON t.url IN (SELECT value FROM json_each(o."Team"))
  `,
})
```

### View queries (`connections.notion.queryView`)

Use this when you want "whatever the view shows" and don't need custom SQL.

```ts
const result = await connections.notion.queryView({ viewUrl: "dataSourceUrl" })
```

## 5) Updating page properties in a data source

To update a page's properties, use `connections.notion.updatePage` with a `propertyUpdates` object.

Rules:

- Use property names that match the data source schema.
- To clear a value, set it to `null`.
- Do not try to set read-only fields like `url` / `createdTime` or computed properties.

Examples:

```ts
await connections.notion.updatePage({
	url: "dataSourceUrl",
	propertyUpdates: {
		Title: "New title",
		Status: "In progress",
		"Is due": true,
		Points: 5,
		Tags: \["Important", "Customer"\],
	},
})
```

```ts
await connections.notion.updatePage({
	url: "okrs",
	propertyUpdates: {
		"date:Due Date:start": "2025-01-15",
		"date:Due Date:end": null,
		"date:Due Date:is_datetime": 0,
	},
})
```
来源

TheBigPromptLibrary · System Prompts · MIT

英文原文,未做机器翻译

同方向的其他提示词