> ## Documentation Index
> Fetch the complete documentation index at: https://docs.riggery.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Tables into State

> Extract tables from a file, import them, then query.

**State** is keyed JSON on this Instance. It is not Memory search.

<Steps>
  <Step title="Get a file">
    Upload on [Files](/instance/files), or let Telegram, mail, or webhook store an artifact. For inbound mail or webhook you can also set **Inbound files** destination to **State (tabular rows)** on the trigger.
  </Step>

  <Step title="Extract">
    On the Graph add **Files extract**. **File id** is one opaque id, not **Message: Files** and not the previous Result unless that Result is literally the id. Details: [Files extract](/graph/tools/files-extract). How values move between nodes: [Previous nodes](/graph/previous-nodes).
  </Step>

  <Step title="Import">
    Next node: **State import from file**. Set **Collection**. **Replace collection** is Yes or No. See [State import from file](/graph/tools/state-import-from-file).
  </Step>

  <Step title="Query">
    Use **State query** (exact filters) or browse records on the [State](/instance/state) tab. Discover names with **State collections**.
  </Step>
</Steps>

Publish and pin before you rely on listening. Chat can test the draft until you pin.
