{"componentChunkName":"component---src-templates-acg-portal-new-template-tsx","path":"/7mqrua8l9","result":{"data":{"markdownRemark":{"html":"<p>第一次填充数据库时可能需要插入大量的数据。本节包含一些如何让这个处理尽可能高效的建议。</p>\n<h4 id=\"禁用自动提交\"><a href=\"#%E7%A6%81%E7%94%A8%E8%87%AA%E5%8A%A8%E6%8F%90%E4%BA%A4\" aria-label=\"禁用自动提交 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>禁用自动提交</h4>\n<p>在使用多个<code>INSERT</code>时，关闭自动提交并且只在最后做一次提交（在普通 SQL中，这意味着在开始发出<code>BEGIN</code>并且在结束时发出<code>COMMIT</code>。某些客户端库可能背着你就做了这些，在这种情况下你需要确定在你需要做这些时该库确实帮你做了）。如果你允许每一个插入都被独立地提交，PalopgSQL要为每一个被增加的行做很多工作。在一个事务中做所有插入的一个额外好处是：如果一个行的插入失败则所有之前插入的行都会被回滚，这样你不会被卡在部分载入的数据中。</p>\n<h4 id=\"使用copy\"><a href=\"#%E4%BD%BF%E7%94%A8copy\" aria-label=\"使用copy permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>使用<code>COPY</code></h4>\n<p>使用<code>COPY</code>在一条命令中装载所有记录，而不是一系列<code>INSERT</code>命令。<code>COPY</code>命令是为装载大量行而优化过的； 它没<code>INSERT</code>那么灵活，但是在大量数据装载时导致的负荷也更少。因为<code>COPY</code>是单条命令，因此使用这种方法填充表时无须关闭自动提交。</p>\n<p>如果你不能使用<code>COPY</code>，那么使用<code>PREPARE</code>来创建一个预备<code>INSERT</code>语句也有所帮助，然后根据需要使用<code>EXECUTE</code>多次。这样就避免了重复分析和规划<code>INSERT</code>的负荷。不同接口以不同的方式提供该功能，可参阅接口文档中的“预备语句”。</p>\n<p>请注意，在载入大量行时，使用<code>COPY</code>几乎总是比使用<code>INSERT</code>快， 即使使用了<code>PREPARE</code>并且把多个插入被成批地放入一个单一事务。</p>\n<p>同样的事务中，<code>COPY</code>比更早的<code>CREATE TABLE</code>或<code>TRUNCATE</code>命令更快。 在这种情况下，不需要写WAL，因为在一个错误的情况下，包含新载入数据的文件不管怎样都将被移除。不过，只有当<code>wal_level</code>设置为<code>minimal</code>（此时所有的命令必须写WAL）时才会应用这种考虑。</p>\n<h4 id=\"移除索引\"><a href=\"#%E7%A7%BB%E9%99%A4%E7%B4%A2%E5%BC%95\" aria-label=\"移除索引 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>移除索引</h4>\n<p>如果你正在载入一个新创建的表，最快的方法是创建该表，用<code>COPY</code>批量载入该表的数据，然后创建表需要的任何索引。在已存在数据的表上创建索引要比在每一行被载入时增量地更新它更快。</p>\n<p>如果你正在对现有表增加大量的数据，删除索引、载入表然后重新创建索引可能是最好的方案。当然，在缺少索引的期间，其它数据库用户的数据库性能将会下降。我们在删除唯一索引之前还需要仔细考虑清楚，因为唯一约束提供的错误检查在缺少索引的时候会丢失。</p>\n<h4 id=\"移除外键约束\"><a href=\"#%E7%A7%BB%E9%99%A4%E5%A4%96%E9%94%AE%E7%BA%A6%E6%9D%9F\" aria-label=\"移除外键约束 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>移除外键约束</h4>\n<p>和索引一样，“成批地”检查外键约束比一行行检查效率更高。因此，先删除外键约束、载入数据然后重建约束会很有用。 同样，载入数据和约束缺失期间错误检查的丢失之间也存在平衡。</p>\n<p>更重要的是，当你在已有外键约束的情况下向表中载入数据时，每个新行需要一个在服务的待处理触发器事件（因为是一个触发器的触发会检查行的外键约束）列表的条目。载入数百万行会导致触发器事件队列溢出可用内存，造成不能接受的交换或者甚至是命令的彻底失败。因此在载入大量数据时，可能<em>需要</em>（而不仅仅是期望）删除并重新应用外键。如果临时移除约束不可接受，那唯一的其他办法可能是就是将载入操作分解成更小的事务。</p>\n<h4 id=\"增加maintenance_work_mem\"><a href=\"#%E5%A2%9E%E5%8A%A0maintenance_work_mem\" aria-label=\"增加maintenance_work_mem permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>增加<code>maintenance_work_mem</code></h4>\n<p>在载入大量数据时，临时增大<code>maintenance_work_mem</code>配置变量可以改进性能。这个参数也可以帮助加速<code>CREATE INDEX</code>命令和<code>ALTER TABLE ADD FOREIGN KEY</code>命令。它不会对<code>COPY</code>本身起很大作用，所以这个建议只有在你使用上面的一个或两个技巧时才有用。</p>\n<h4 id=\"增加max_wal_size\"><a href=\"#%E5%A2%9E%E5%8A%A0max_wal_size\" aria-label=\"增加max_wal_size permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>增加<code>max_wal_size</code></h4>\n<p>临时增大<code>max_wal_size</code>配置变量也可以让大量数据载入更快。这是因为向PalopgSQL中载入大量的数据将导致检查点的发生比平常（由<code>checkpoint_timeout</code>配置变量指定）更频繁。无论何时发生一个检查点时，所有脏页都必须被刷写到磁盘上。</p>\n<p>通过在批量数据载入时临时增加<code>max_wal_size</code>，所需的检查点数目可以被缩减。</p>\n<h4 id=\"禁用-wal-归档和流复制\"><a href=\"#%E7%A6%81%E7%94%A8-wal-%E5%BD%92%E6%A1%A3%E5%92%8C%E6%B5%81%E5%A4%8D%E5%88%B6\" aria-label=\"禁用 wal 归档和流复制 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>禁用 WAL 归档和流复制</h4>\n<p>当使用 WAL 归档或流复制向一个安装中载入大量数据时，在录入结束后执行一次新的基础备份比处理大量的增量 WAL\n数据更快。为了防止载入时记录增量WAL，通过将<code>wal_level</code>设置为<code>minimal</code>、将<code>archive_mode</code>设置为<code>off</code>以及将<code>max_wal_senders</code>设置为零来禁用归档和流复制。</p>\n<p>但需要注意的是，修改这些设置需要重启服务。</p>\n<p>除了避免归档器或 WAL 发送者处理 WAL 数据的时间之外，这样做将实际上使某些命令更快，因为它们被设计为在<code>wal_level</code>为<code>minimal</code>时完全不写 WAL（通过在最后执行一个<code>fsync</code>而不是写 WAL，它们能以更小地代价保证崩溃安全）。这适用于下列命令：</p>\n<ul>\n<li><code>CREATE TABLE AS SELECT</code></li>\n<li><code>CREATE INDEX</code>（以及类似 <code>ALTER TABLE ADD PRIMARY KEY</code>的变体）</li>\n<li><code>ALTER TABLE SET TABLESPACE</code></li>\n<li><code>CLUSTER</code></li>\n<li><code>COPY FROM</code>，当目标表已经被创建或者在同一个事务的早期被截断</li>\n</ul>\n<h4 id=\"事后运行analyze\"><a href=\"#%E4%BA%8B%E5%90%8E%E8%BF%90%E8%A1%8Canalyze\" aria-label=\"事后运行analyze permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>事后运行<code>ANALYZE</code></h4>\n<p>不管什么时候你显著地改变了表中的数据分布后，我们都强烈推荐运行<code>ANALYZE</code>。这包括向表中批量载入大量数据。运行<code>ANALYZE</code>（或者<code>VACUUM ANALYZE</code>）保证优化器有表的最新统计信息。</p>\n<p>如果没有统计数据或者统计数据过时，那么优化器在查询规划时可能做出很差劲决定，导致在任意表上的性能低下。需要注意的是，如果启用了autovacuum守护进程，它可能会自动运行<code>ANALYZE</code>。</p>\n<h4 id=\"关于sd_dump的一些注记\"><a href=\"#%E5%85%B3%E4%BA%8Esd_dump%E7%9A%84%E4%B8%80%E4%BA%9B%E6%B3%A8%E8%AE%B0\" aria-label=\"关于sd_dump的一些注记 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>关于sd_dump的一些注记</h4>\n<p>sd_dump生成的转储脚本自动应用上面的若干个（但不是全部）技巧。要尽可能快地载入sd_dump转储，你需要手工做一些额外的事情（请注意，这些要点适用于<em>恢复</em>一个转储，而不是<em>创建</em>它的时候。同样的要点也适用于使用ssql载入一个文本转储或用sd_restore从一个sd_dump归档文件载入）。</p>\n<p>默认情况下，sd_dump使用<code>COPY</code>，并且当它在生成一个完整的模式和数据转储时，它会很小心地先装载数据，然后创建索引和外键。因此在这种情况下，一些指导方针是被自动处理的。你需要做的是：</p>\n<ul>\n<li>为<code>maintenance_work_mem</code>和<code>max_wal_size</code>设置适当的（即比正常值大的）值。</li>\n<li>如果使用 WAL归档或流复制，在转储时考虑禁用它们。在载入转储之前，可通过将<code>archive_mode</code>设置为<code>off</code>、将<code>wal_level</code>设置为<code>minimal</code>以及将<code>max_wal_senders</code>设置为零（在录入dump前）来实现禁用。之后，将它们设回正确的值并执行一次新的基础备份。</li>\n<li>采用sd_dump和sd_restore的并行转储和恢复模式进行实验并且找出要使用的最佳并发任务数量。通过使用<code>-j</code>选项的并行转储和恢复应该能为你带来比串行模式高得多的性能。</li>\n<li>\n<p>考虑是否应该在一个单一事务中恢复整个转储。要这样做，将<code>-1</code>或<code>--single-transaction</code>命令行选项传递给ssql或sd_restore。</p>\n<p>当使用这种模式时，即使是一个很小的错误也会回滚整个恢复，可能会丢弃已经处理了很多个小时的工作。根据数据间的相关性，可能手动清理更好。如果你使用一个单一事务并且关闭了 WAL归档，<code>COPY</code>命令将运行得最快。</p>\n</li>\n<li>如果在数据库服务上有多个 CPU可用，可以考虑使用sd_restore的<code>--jobs</code>选项。这允许并行数据载入和索引创建。</li>\n<li>运行<code>ANALYZE</code>。</li>\n</ul>\n<p>一个只涉及数据的转储仍将使用<code>COPY</code>，但是它不会删除或重建索引，并且它通常不会触碰外键。</p>\n<p>因此当载入一个只有数据的转储时，如果你希望使用那些技术，你需要负责删除并重建索引和外键。在载入数据时增加<code>max_wal_size</code>仍然有用，但是不要去增加<code>maintenance_work_mem</code>；不如说在以后手工重建索引和外键时你已经做了这些。并且不要忘记在完成后执行<code>ANALYZE</code>。</p>\n<p>可以通过使用<code>--disable-triggers</code>选项的方法获得禁用外键的效果,不过要意识到这么做是消除（而不只是推迟）外键验证。因此如果你使用该选项，就可能插入坏数据。</p>","fields":{"slug":"7mqrua8l9","title":"填充一个数据库","date":"2026-06-24","extractedHeadings":[]},"headings":[{"value":"禁用自动提交","depth":4},{"value":"使用COPY","depth":4},{"value":"移除索引","depth":4},{"value":"移除外键约束","depth":4},{"value":"增加maintenance_work_mem","depth":4},{"value":"增加max_wal_size","depth":4},{"value":"禁用 WAL 归档和流复制","depth":4},{"value":"事后运行ANALYZE","depth":4},{"value":"关于sd_dump的一些注记","depth":4}]}},"pageContext":{"isCreatedByStatefulCreatePages":false,"slug":"7mqrua8l9","prev":{"id":"Tmqru944q","name":"数据导入导出及外部数据访问","path":"Tmqru944q","filePath":"Palo for PostgreSQL/开发指南/数据导入导出/批量加载数据/数据导入导出及外部数据访问.md","seo":null,"parentIds":["mmn7acjwy","Rmqq1bpae","8mqq1fa8h","fmqru5obw"],"parents":[{"id":"mmn7acjwy","documentId":"3e3984c0-52d4-498c-a8ec-9cc1549d91e6","name":"Palo for PostgreSQL","repoName":"PALO","filePath":"Palo for PostgreSQL","disabled":false,"path":"mmn7acjwy","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"Rmqq1bpae","documentId":"fa486bd4-700a-42d5-b6aa-2930bf5c0b48","name":"开发指南","repoName":"PALO","filePath":"Palo for PostgreSQL/开发指南","disabled":false,"path":"Rmqq1bpae","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"8mqq1fa8h","documentId":"160a0611-5c2c-4f01-abdc-5be4b002c220","name":"数据导入导出","repoName":"PALO","filePath":"Palo for PostgreSQL/开发指南/数据导入导出","disabled":false,"path":"8mqq1fa8h","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"fmqru5obw","documentId":"9c894148-95c5-4132-8af0-55c05c9bf5e5","name":"批量加载数据","repoName":"PALO","filePath":"Palo for PostgreSQL/开发指南/数据导入导出/批量加载数据","disabled":false,"path":"fmqru5obw","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""}]},"next":{"id":"8mqrud3lv","name":"COPY","path":"8mqrud3lv","filePath":"Palo for PostgreSQL/开发指南/数据导入导出/批量加载数据/COPY.md","seo":null,"parentIds":["mmn7acjwy","Rmqq1bpae","8mqq1fa8h","fmqru5obw"],"parents":[{"id":"mmn7acjwy","documentId":"3e3984c0-52d4-498c-a8ec-9cc1549d91e6","name":"Palo for PostgreSQL","repoName":"PALO","filePath":"Palo for PostgreSQL","disabled":false,"path":"mmn7acjwy","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"Rmqq1bpae","documentId":"fa486bd4-700a-42d5-b6aa-2930bf5c0b48","name":"开发指南","repoName":"PALO","filePath":"Palo for PostgreSQL/开发指南","disabled":false,"path":"Rmqq1bpae","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"8mqq1fa8h","documentId":"160a0611-5c2c-4f01-abdc-5be4b002c220","name":"数据导入导出","repoName":"PALO","filePath":"Palo for PostgreSQL/开发指南/数据导入导出","disabled":false,"path":"8mqq1fa8h","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"fmqru5obw","documentId":"9c894148-95c5-4132-8af0-55c05c9bf5e5","name":"批量加载数据","repoName":"PALO","filePath":"Palo for PostgreSQL/开发指南/数据导入导出/批量加载数据","disabled":false,"path":"fmqru5obw","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""}]},"parents":[{"id":"mmn7acjwy","documentId":"3e3984c0-52d4-498c-a8ec-9cc1549d91e6","name":"Palo for PostgreSQL","repoName":"PALO","filePath":"Palo for PostgreSQL","disabled":false,"path":"mmn7acjwy","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"Rmqq1bpae","documentId":"fa486bd4-700a-42d5-b6aa-2930bf5c0b48","name":"开发指南","repoName":"PALO","filePath":"Palo for PostgreSQL/开发指南","disabled":false,"path":"Rmqq1bpae","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"8mqq1fa8h","documentId":"160a0611-5c2c-4f01-abdc-5be4b002c220","name":"数据导入导出","repoName":"PALO","filePath":"Palo for PostgreSQL/开发指南/数据导入导出","disabled":false,"path":"8mqq1fa8h","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"fmqru5obw","documentId":"9c894148-95c5-4132-8af0-55c05c9bf5e5","name":"批量加载数据","repoName":"PALO","filePath":"Palo for PostgreSQL/开发指南/数据导入导出/批量加载数据","disabled":false,"path":"fmqru5obw","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""}],"specificSeo":null}}}