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

# PostgreSQL 查询配置

> 从 PostgreSQL 检索记录，并使用这些记录在工作流中生成知行之桥消息。

export const DbasaSelectExampleFlow = ({datasource = "the data source", selectXmlFlow = "dbsa_select_flow.png", siteNameShort = "知行之桥"}) => <>
    <p>为 Select 配置的 {datasource} 端口选择表和列后，将端口放置在 {siteNameShort} 工作流的开头。下面的屏幕截图描述了一个示例流程，其中包含一个 {datasource} Select 端口、一个 XML Map 端口、一个 CSV 端口和一个 File 端口：</p>

    <img src={`/public/images/${selectXmlFlow}`} width="900" />

    <p>此示例工作流中的数据通过以下步骤：</p>

    <ol>
      <li><strong>{datasource}_Select</strong> 端口从 {datasource} 连接中提取数据。</li>
      <li>此数据作为 <strong>源文件</strong> 传递给 <strong>XML_Map</strong> 端口，后者映射到 <strong>源</strong> 的树状结构中。</li>
      <li>来自 <strong>CSV1</strong> 端口的数据作为 <strong>目标文件</strong> 传递给 <strong>XML_Map</strong> 端口，后者映射到 <strong>目标</strong> 的树状结构。
        <img src="/public/images/dbsa_xmlmap_select.png" width="800" />
      </li>
      <li><strong>XML_Map</strong> 端口尝试自动将 <strong>源</strong> 元素映射到具有相同名称的 <strong>目标</strong> 元素。你可以手动更改这些并通过将元素从 <strong>源</strong> 拖到 <strong>目标</strong> 来填充空白映射。
        <img src="/public/images/dbsa_xmlmap_elements.png" width="800" />
      </li>
      <li>来自 <strong>CSV1</strong> 的文件已经用来自 <strong>{datasource}_Select</strong> 的数据进行了修改，然后向下传递来自 <strong>CSV1</strong> 的工作流。</li>
    </ol>
  </>;

export const DbasaSelectMultipleTables = ({datasource = "the data source", connectorSlug}) => <>
    <p>{datasource} 端口支持通过一个操作选择多个表。可以通过以下两种方式实现：</p>

    <ul>
      <li>将额外的表指定为父表的子表。有关详细信息，请参阅 <a href={connectorSlug ? `/26.2/self-hosted/zh/connectors/${connectorSlug}/${connectorSlug}-ac#child-tables` : "#child-tables"}>子表</a>。</li>
      <li>创建多个选择配置的 {datasource} 端口，为每个端口分配一个不同的表，并将它们全部连接到工作流中的同一个端口。</li>
    </ul>

    <p>你可以根据需要为每个子表或单个 {datasource} 端口分配单独的查询。有关更多信息，请参见 <a href="#filters">过滤规则</a>。</p>
  </>;

export const DbasaSelectAdvancedSettings = () => <p>在 <strong>高级设置</strong> 中，你可以配置设置以使用特定列处理记录并在成功处理行时使用特定值更新列。这些设置对于维护和跟踪流程中的更改很有用。</p>;

export const DbasaSelectFilterGroups = () => <>
    <p>你可以通过单击 <strong>添加规则</strong> 并创建更多规则来将多个过滤规则应用于你的端口。过滤规则按组分隔，所有过滤规则默认属于同一个组。你可以通过单击 <strong>添加组</strong> 创建多个组来分隔过滤规则。</p>

    <p>组中的每个过滤规则根据你在组顶部选择的选项相互交互：</p>

    <ul>
      <li>你可以选中 <strong>NOT</strong> 框来反转过滤条件。例如，在上面显示的 <strong>Author</strong> 过滤器中，选中 <strong>NOT</strong> 框会指示端口选择 <em>不</em> 包含值 <strong>Smith</strong> 的 Author 值。</li>
      <li>选择 <strong>AND</strong> 或 <strong>OR</strong> 以确定多个过滤规则的组逻辑。
        <ul>
          <li>如果你选择 <strong>AND</strong>，则组内的每个过滤规则都必须为真，才能满足过滤条件。</li>
          <li>如果你选择 <strong>OR</strong>，则组内至少有一个过滤规则必须为真，才能满足过滤条件。可以满足多个过滤规则，结果和只满足一个一样。</li>
        </ul>
      </li>
    </ul>

    <p>过滤组具有简单的父/子关系。属于父组的每个过滤规则和过滤组作为过滤逻辑的单个实体存在。例如，下面的屏幕截图显示了多个过滤组。</p>

    <img src="/public/images/dbsa_filter_multiple.png" width="600" />

    <p>在此示例中，父组使用 <strong>OR</strong> 逻辑。这意味着如果以下语句中的 <em>任一</em> 为真，则满足过滤条件：</p>
    <ul>
      <li><strong>Author</strong> 列包含值 <strong>Smith</strong></li>
      <li><strong>Id</strong> 列等于 <strong>1</strong> 或 <strong>2</strong></li>
      <li><strong>Title</strong> 列包含值 <strong>Kitchen</strong>，<strong>UpdatedAt</strong> 列大于 <strong>400</strong></li>
    </ul>

    <p>如果满足此过滤条件，则端口选择满足条件的数据并将其向下传递。</p>
  </>;

export const DbasaSelectFilterRule = () => <>
    <p>要创建过滤规则，请按照下列步骤操作：</p>

    <ol>
      <li>点击 <strong>添加规则</strong>。</li>
      <li>在新规则的下拉列表中，选择要过滤的列。</li>
      <li>出现两个新字段。在新的下拉列表中，选择过滤条件。
        <ul>
          <li>可用的过滤条件取决于你选择的列的数据类型。例如，<code>long</code> 数据类型具有 <strong>Greater Than</strong> 条件，而 <code>string</code> 数据类型则没有。</li>
        </ul>
      </li>
      <li>如果你选择的过滤条件需要一个值，请在空白值字段中输入该值。如果你选择的过滤条件不需要值（例如，如果你选择 <strong>Is Null</strong>），则值字段将消失。</li>
      <li>过滤规则完成后，其背景会从红色变为白色。</li>
    </ol>

    <p>下图显示了名为 <strong>Author</strong> 的列上的过滤规则示例。有了这个过滤规则，端口只选择 <strong>Author</strong> 列中包含值 <strong>Smith</strong> 的值。</p>

    <img src="/public/images/dbsa_filter_single.png" width="600" />
  </>;

export const DbasaSelectFilters = () => <>
    <p>选择表后，你可以选择使用 <strong>过滤规则</strong> 面板来筛选端口选择的数据。端口将你的过滤规则转换为查询语法，语法显示在端口配置页面底部的 <strong>查询</strong> 面板中。</p>

    <Note>过滤器功能是可选的，如果你的数据不适合你的用例，你不必对它应用过滤器。</Note>
  </>;

export const DbasaSelectTablesAndColumns = ({datasource = "the data source", connectorSlug}) => <>
    <p>如果为 {datasource} 端口选择 Select，则必须从 {datasource} 中选择一个（或多个）目标表。单击 <strong>表格</strong> 面板上方的 <strong>添加</strong> 按钮。</p>

    <img src="/public/images/dbsa_select_tableadd.png" width="250" />

    <p>一个模态框出现并列出所有可用的表格。选择所需的表并单击 <strong>添加</strong>。</p>

    <img src="/public/images/dbsa_tablelist.png" width="500" />

    <p>选定的表出现在 <strong>表格</strong> 面板下，表中的列出现在 <strong>列</strong> 面板下。端口会自动检测具有特殊相关性的值（例如主键、外键等）并相应地标记它们。</p>

    <img src="/public/images/dbsa_select_columns.png" width="800" />

    <p>默认情况下，所有列都被选中以包含在 {datasource} 端口的操作中。你可以通过取消选中来删除单个列。</p>

    <Note>你可以通过单击 <strong>添加</strong> 并重复此过程来选择更多表。有关详细信息，请参阅 <a href={connectorSlug ? `/26.2/self-hosted/zh/connectors/${connectorSlug}/${connectorSlug}-ac#child-tables` : "#child-tables"}>子表</a>。</Note>
  </>;

export const DbasaSelectIntro = ({datasource = "the data source", siteName = "知行之桥"}) => <p>Select 操作从 {datasource} 检索数据并将其带入 {siteName}。</p>;

<DbasaSelectIntro datasource="PostgreSQL" />

## 表格和列

<DbasaSelectTablesAndColumns datasource="PostgreSQL" connectorSlug="postgresql" />

### 过滤器

<DbasaSelectFilters />

#### 创建过滤规则

<DbasaSelectFilterRule />

#### 过滤组

<DbasaSelectFilterGroups />

### 高级设置

<DbasaSelectAdvancedSettings />

### 从多个表中选择

<DbasaSelectMultipleTables datasource="PostgreSQL" connectorSlug="postgresql" />

\##知行之桥工作流示例

<DbasaSelectExampleFlow datasource="PostgreSQL" selectXmlFlow="postgresql_xmlflow_select.png" />
