blob: 5405ee363e5d1605e1a7f2c78580df0ecde3d799 [file] [log] [blame]
<!DOCTYPE html>
<html lang="zh-CN" data-theme="light">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-beta.61" />
<meta name="theme" content="VuePress Theme Hope" />
<link rel="alternate" hreflang="en-us" href="https://iotdb.apache.org/UserGuide/V1.1.x/Query-Data/Select-Into.html"><meta property="og:url" content="https://iotdb.apache.org/zh/UserGuide/V1.1.x/Query-Data/Select-Into.html"><meta property="og:site_name" content="IoTDB Website"><meta property="og:description" content="查询写回(SELECT INTO) SELECT INTO 语句用于将查询结果写入一系列指定的时间序列中。 应用场景如下: 实现 IoTDB 内部 ETL:对原始数据进行 ETL 处理后写入新序列。; 查询结果存储:将查询结果进行持久化存储,起到类似物化视图的作用。; 非对齐序列转对齐序列:对齐序列从0.13版本开始支持,可以通过该功能将非对齐序列的数..."><meta property="og:type" content="article"><meta property="og:locale" content="zh-CN"><meta property="og:locale:alternate" content="en-US"><script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","headline":"","image":[""],"dateModified":null,"author":[]}</script><link rel="icon" href="/favicon.ico"><meta name="Description" content="Apache IoTDB: Time Series Database for IoT"><meta name="Keywords" content="TSDB, time series, time series database, IoTDB, IoT database, IoT data management,时序数据库, 时间序列管理, IoTDB, 物联网数据库, 实时数据库, 物联网数据管理, 物联网数据"><meta name="baidu-site-verification" content="wfKETzB3OT"><meta name="google-site-verification" content="mZWAoRY0yj_HAr-s47zHCGHzx5Ju-RVm5wDbPnwQYFo"><title>IoTDB Website</title><meta name="description" content="查询写回(SELECT INTO) SELECT INTO 语句用于将查询结果写入一系列指定的时间序列中。 应用场景如下: 实现 IoTDB 内部 ETL:对原始数据进行 ETL 处理后写入新序列。; 查询结果存储:将查询结果进行持久化存储,起到类似物化视图的作用。; 非对齐序列转对齐序列:对齐序列从0.13版本开始支持,可以通过该功能将非对齐序列的数...">
<style>
:root {
--bg-color: #fff;
}
html[data-theme="dark"] {
--bg-color: #1d1e1f;
}
html,
body {
background: var(--bg-color);
}
</style>
<script>
const userMode = localStorage.getItem("vuepress-theme-hope-scheme");
const systemDarkMode =
window.matchMedia &&
window.matchMedia("(prefers-color-scheme: dark)").matches;
if (userMode === "dark" || (userMode !== "light" && systemDarkMode)) {
document.documentElement.setAttribute("data-theme", "dark");
}
</script>
<link rel="preload" href="/assets/style-2f652485.css" as="style"><link rel="stylesheet" href="/assets/style-2f652485.css">
<link rel="modulepreload" href="/assets/app-cbe6e1e7.js"><link rel="modulepreload" href="/assets/framework-44b8a372.js"><link rel="modulepreload" href="/assets/Select-Into.html-2f8d19eb.js"><link rel="modulepreload" href="/assets/Select-Into.html-e9e603a5.js">
</head>
<body>
<div id="app"><!--[--><!--[--><!--[--><span tabindex="-1"></span><a href="#main-content" class="skip-link sr-only">跳至主要內容</a><!--]--><!--[--><div class="theme-container has-toc"><!--[--><header class="navbar hide-icon" id="navbar"><div class="navbar-start"><button class="toggle-sidebar-button" title="Toggle Sidebar"><span class="icon"></span></button><!--[--><!----><!--]--><a href="/zh/" class="brand"><img class="logo" src="/logo.png" alt="IoTDB Website"><!----><span class="site-name hide-in-pad">IoTDB Website</span></a><!--[--><!----><!--]--></div><div class="navbar-center"><!--[--><!----><!--]--><!--[--><!----><!--]--></div><div class="navbar-end"><!--[--><!----><!--]--><div id="docsearch-container"></div><nav class="nav-links"><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button class="dropdown-title" type="button" aria-label="文档"><span class="title"><!---->文档</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="/zh/UserGuide/Master/QuickStart/QuickStart.html" class="nav-link" aria-label="latest"><!---->latest<!----></a></li><li class="dropdown-item"><a href="/zh/UserGuide/V1.2.x/QuickStart/QuickStart.html" class="nav-link" aria-label="v1.2.x"><!---->v1.2.x<!----></a></li><li class="dropdown-item"><a href="/zh/UserGuide/V1.1.x/QuickStart/QuickStart.html" class="nav-link" aria-label="v1.1.x"><!---->v1.1.x<!----></a></li><li class="dropdown-item"><a href="/zh/UserGuide/V1.0.x/QuickStart/QuickStart.html" class="nav-link" aria-label="v1.0.x"><!---->v1.0.x<!----></a></li><li class="dropdown-item"><a href="/zh/UserGuide/V0.13.x/QuickStart/QuickStart.html" class="nav-link" aria-label="v0.13.x"><!---->v0.13.x<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=177051872" rel="noopener noreferrer" target="_blank" aria-label="系统设计" class="nav-link"><!---->系统设计<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></div><div class="nav-item hide-in-mobile"><a href="/zh/Download/" class="nav-link" aria-label="下载"><!---->下载<!----></a></div><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button class="dropdown-title" type="button" aria-label="社区"><span class="title"><!---->社区</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="/zh/Community/About.html" class="nav-link" aria-label="关于社区"><!---->关于社区<!----></a></li><li class="dropdown-item"><a href="https://cwiki.apache.org/confluence/display/iotdb" rel="noopener noreferrer" target="_blank" aria-label="Wiki" class="nav-link"><!---->Wiki<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="/zh/Community/Community-Project-Committers.html" class="nav-link" aria-label="开发人员"><!---->开发人员<!----></a></li><li class="dropdown-item"><a href="/zh/Community/Community-Powered-By.html" class="nav-link" aria-label="技术支持"><!---->技术支持<!----></a></li><li class="dropdown-item"><a href="/Community/Materials.html" class="nav-link" aria-label="活动与报告"><!---->活动与报告<!----></a></li><li class="dropdown-item"><a href="/zh/Community/Feedback.html" class="nav-link" aria-label="交流与反馈"><!---->交流与反馈<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button class="dropdown-title" type="button" aria-label="开发"><span class="title"><!---->开发</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="/zh/Development/VoteRelease.html" class="nav-link" aria-label="如何投票"><!---->如何投票<!----></a></li><li class="dropdown-item"><a href="/zh/Development/HowToCommit.html" class="nav-link" aria-label="如何提交代码"><!---->如何提交代码<!----></a></li><li class="dropdown-item"><a href="/zh/Development/HowToJoin.html" class="nav-link" aria-label="成为Contributor"><!---->成为Contributor<!----></a></li><li class="dropdown-item"><a href="/zh/Development/Committer.html" class="nav-link" aria-label="成为Committer"><!---->成为Committer<!----></a></li><li class="dropdown-item"><a href="/zh/Development/ContributeGuide.html" class="nav-link" aria-label="项目开发指南"><!---->项目开发指南<!----></a></li><li class="dropdown-item"><a href="/zh/Development/HowtoContributeCode.html" class="nav-link" aria-label="技术贡献指南"><!---->技术贡献指南<!----></a></li><li class="dropdown-item"><a href="/zh/Development/format-changelist.html" class="nav-link" aria-label="TsFile的更改列表"><!---->TsFile的更改列表<!----></a></li><li class="dropdown-item"><a href="/zh/Development/rpc-changelist" class="nav-link" aria-label="RPC变更清单"><!---->RPC变更清单<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button class="dropdown-title" type="button" aria-label="ASF"><span class="title"><!---->ASF</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="https://www.apache.org/" rel="noopener noreferrer" target="_blank" aria-label="基金会" class="nav-link"><!---->基金会<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/licenses/" rel="noopener noreferrer" target="_blank" aria-label="许可证" class="nav-link"><!---->许可证<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/security/" rel="noopener noreferrer" target="_blank" aria-label="安全" class="nav-link"><!---->安全<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/foundation/sponsorship.html" rel="noopener noreferrer" target="_blank" aria-label="赞助" class="nav-link"><!---->赞助<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/foundation/thanks.html" rel="noopener noreferrer" target="_blank" aria-label="致谢" class="nav-link"><!---->致谢<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/events/current-event" rel="noopener noreferrer" target="_blank" aria-label="活动" class="nav-link"><!---->活动<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li></ul></button></div></div></nav><div class="nav-item"><div class="dropdown-wrapper i18n-dropdown"><button class="dropdown-title" type="button" aria-label="选择语言"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon i18n-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="i18n icon" style="width:1rem;height:1rem;vertical-align:middle;"><path d="M379.392 460.8 494.08 575.488l-42.496 102.4L307.2 532.48 138.24 701.44l-71.68-72.704L234.496 460.8l-45.056-45.056c-27.136-27.136-51.2-66.56-66.56-108.544h112.64c7.68 14.336 16.896 27.136 26.112 35.84l45.568 46.08 45.056-45.056C382.976 312.32 409.6 247.808 409.6 204.8H0V102.4h256V0h102.4v102.4h256v102.4H512c0 70.144-37.888 161.28-87.04 210.944L378.88 460.8zM576 870.4 512 1024H409.6l256-614.4H768l256 614.4H921.6l-64-153.6H576zM618.496 768h196.608L716.8 532.48 618.496 768z"></path></svg><!--]--><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="/UserGuide/V1.1.x/Query-Data/Select-Into.html" class="nav-link" aria-label="English"><!---->English<!----></a></li><li class="dropdown-item"><a aria-current="page" href="/zh/UserGuide/V1.1.x/Query-Data/Select-Into.html" class="router-link-active router-link-exact-active nav-link active" aria-label="简体中文"><!---->简体中文<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><button id="appearance-switch"><svg xmlns="http://www.w3.org/2000/svg" class="icon auto-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="auto icon" style="display:block;"><path d="M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon dark-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="dark icon" style="display:none;"><path d="M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon light-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="light icon" style="display:none;"><path d="M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"></path></svg></button></div><div class="nav-item"><a class="repo-link" href="https://github.com/apache/iotdb" target="_blank" rel="noopener noreferrer" aria-label="GitHub"><svg xmlns="http://www.w3.org/2000/svg" class="icon github-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="github icon" style="width:1.25rem;height:1.25rem;vertical-align:middle;"><path d="M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"></path></svg></a></div><!--[--><!----><!--]--><button class="toggle-navbar-button" aria-label="Toggle Navbar" aria-expanded="false" aria-controls="nav-screen"><span class="button-container"><span class="button-top"></span><span class="button-middle"></span><span class="button-bottom"></span></span></button></div></header><!----><!--]--><!----><div class="toggle-sidebar-wrapper"><span class="arrow start"></span></div><aside class="sidebar" id="sidebar"><!--[--><!----><!--]--><ul class="sidebar-links"><li><section class="sidebar-group"><p class="sidebar-heading"><!----><span class="title">IoTDB用户手册 (V1.1.x)</span><!----></p><ul class="sidebar-links"></ul></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">关于IoTDB</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">快速上手</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">数据模式与概念</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">语法约定</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">应用编程接口</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">元数据操作</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">数据写入(数据更新)</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">数据删除</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable active"><!----><span class="title">数据查询</span><span class="arrow down"></span></button><ul class="sidebar-links"><li><!--[--><a href="/zh/UserGuide/V1.1.x/Query-Data/Overview.html" class="nav-link sidebar-link sidebar-page" aria-label="概述"><!---->概述<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/zh/UserGuide/V1.1.x/Query-Data/Select-Expression.html" class="nav-link sidebar-link sidebar-page" aria-label="选择表达式"><!---->选择表达式<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/zh/UserGuide/V1.1.x/Query-Data/Last-Query.html" class="nav-link sidebar-link sidebar-page" aria-label="最新点查询"><!---->最新点查询<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/zh/UserGuide/V1.1.x/Query-Data/Align-By.html" class="nav-link sidebar-link sidebar-page" aria-label="查询对齐模式"><!---->查询对齐模式<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/zh/UserGuide/V1.1.x/Query-Data/Where-Condition.html" class="nav-link sidebar-link sidebar-page" aria-label="查询过滤条件"><!---->查询过滤条件<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/zh/UserGuide/V1.1.x/Query-Data/Group-By.html" class="nav-link sidebar-link sidebar-page" aria-label="分段分组聚合"><!---->分段分组聚合<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/zh/UserGuide/V1.1.x/Query-Data/Having-Condition.html" class="nav-link sidebar-link sidebar-page" aria-label="聚合结果过滤"><!---->聚合结果过滤<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/zh/UserGuide/V1.1.x/Query-Data/Fill.html" class="nav-link sidebar-link sidebar-page" aria-label="结果集补空值"><!---->结果集补空值<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/zh/UserGuide/V1.1.x/Query-Data/Pagination.html" class="nav-link sidebar-link sidebar-page" aria-label="结果集分页"><!---->结果集分页<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a aria-current="page" href="/zh/UserGuide/V1.1.x/Query-Data/Select-Into.html" class="router-link-active router-link-exact-active nav-link active sidebar-link sidebar-page active" aria-label="查询写回"><!---->查询写回<!----></a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a aria-current="page" href="/zh/UserGuide/V1.1.x/Query-Data/Select-Into.html#查询写回-select-into" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="查询写回(SELECT INTO)"><!---->查询写回(SELECT INTO)<!----></a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a aria-current="page" href="/zh/UserGuide/V1.1.x/Query-Data/Select-Into.html#语法定义" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="语法定义"><!---->语法定义<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/zh/UserGuide/V1.1.x/Query-Data/Select-Into.html#应用举例" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="应用举例"><!---->应用举例<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/zh/UserGuide/V1.1.x/Query-Data/Select-Into.html#相关用户权限" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="相关用户权限"><!---->相关用户权限<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/zh/UserGuide/V1.1.x/Query-Data/Select-Into.html#相关配置参数" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="相关配置参数"><!---->相关配置参数<!----></a><ul class="sidebar-sub-headers"></ul></li></ul></li></ul><!--]--></li><li><!--[--><a href="/zh/UserGuide/V1.1.x/Query-Data/Continuous-Query.html" class="nav-link sidebar-link sidebar-page" aria-label="连续查询"><!---->连续查询<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li></ul></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">运算符和函数</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">触发器</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">监控告警</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">权限管理</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">运维工具</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">端云协同</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">系统集成</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">分布式</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">FAQ</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">参考</span><span class="arrow end"></span></button><!----></section></li></ul><!--[--><!----><!--]--></aside><!--[--><main class="page" id="main-content"><!--[--><!----><nav class="breadcrumb disable"></nav><div class="page-title"><h1><!----></h1><div class="page-info"><!----><!----><!----><!----><span class="page-reading-time-info" aria-label="阅读时间"><svg xmlns="http://www.w3.org/2000/svg" class="icon timer-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="timer icon"><path d="M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"></path></svg><span>大约 10 分钟</span><meta property="timeRequired" content="PT10M"></span><!----><!----></div><hr></div><div class="toc-place-holder"><aside id="toc"><!--[--><!----><!--]--><div class="toc-header">此页内容<button class="print-button" title="打印"><svg xmlns="http://www.w3.org/2000/svg" class="icon print-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="print icon"><path d="M819.2 364.8h-44.8V128c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v236.8h-44.8C145.067 364.8 96 413.867 96 473.6v192c0 59.733 49.067 108.8 108.8 108.8h44.8V896c0 17.067 14.933 32 32 32h460.8c17.067 0 32-14.933 32-32V774.4h44.8c59.733 0 108.8-49.067 108.8-108.8v-192c0-59.733-49.067-108.8-108.8-108.8zM313.6 160h396.8v204.8H313.6V160zm396.8 704H313.6V620.8h396.8V864zM864 665.6c0 25.6-19.2 44.8-44.8 44.8h-44.8V588.8c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v121.6h-44.8c-25.6 0-44.8-19.2-44.8-44.8v-192c0-25.6 19.2-44.8 44.8-44.8h614.4c25.6 0 44.8 19.2 44.8 44.8v192z"></path></svg></button></div><div class="toc-wrapper"><ul class="toc-list"><!--[--><li class="toc-item"><a aria-current="page" href="/zh/UserGuide/V1.1.x/Query-Data/Select-Into.html#查询写回-select-into" class="router-link-active router-link-exact-active toc-link level2">查询写回(SELECT INTO)</a></li><ul class="toc-list"><!--[--><li class="toc-item"><a aria-current="page" href="/zh/UserGuide/V1.1.x/Query-Data/Select-Into.html#语法定义" class="router-link-active router-link-exact-active toc-link level3">语法定义</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/zh/UserGuide/V1.1.x/Query-Data/Select-Into.html#应用举例" class="router-link-active router-link-exact-active toc-link level3">应用举例</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/zh/UserGuide/V1.1.x/Query-Data/Select-Into.html#相关用户权限" class="router-link-active router-link-exact-active toc-link level3">相关用户权限</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/zh/UserGuide/V1.1.x/Query-Data/Select-Into.html#相关配置参数" class="router-link-active router-link-exact-active toc-link level3">相关配置参数</a></li><!----><!--]--></ul><!--]--></ul></div><!--[--><!----><!--]--></aside></div><!----><div class="theme-hope-content"><!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
--><h2 id="查询写回-select-into" tabindex="-1"><a class="header-anchor" href="#查询写回-select-into" aria-hidden="true">#</a> 查询写回(SELECT INTO)</h2><p><code>SELECT INTO</code> 语句用于将查询结果写入一系列指定的时间序列中。</p><p>应用场景如下:</p><ul><li><strong>实现 IoTDB 内部 ETL</strong>:对原始数据进行 ETL 处理后写入新序列。</li><li><strong>查询结果存储</strong>:将查询结果进行持久化存储,起到类似物化视图的作用。</li><li><strong>非对齐序列转对齐序列</strong>:对齐序列从0.13版本开始支持,可以通过该功能将非对齐序列的数据写入新的对齐序列中。</li></ul><h3 id="语法定义" tabindex="-1"><a class="header-anchor" href="#语法定义" aria-hidden="true">#</a> 语法定义</h3><h4 id="整体描述" tabindex="-1"><a class="header-anchor" href="#整体描述" aria-hidden="true">#</a> 整体描述</h4><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code>selectIntoStatement
: <span class="token keyword">SELECT</span>
resultColumn <span class="token punctuation">[</span><span class="token punctuation">,</span> resultColumn<span class="token punctuation">]</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token keyword">INTO</span> intoItem <span class="token punctuation">[</span><span class="token punctuation">,</span> intoItem<span class="token punctuation">]</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token keyword">FROM</span> prefixPath <span class="token punctuation">[</span><span class="token punctuation">,</span> prefixPath<span class="token punctuation">]</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token punctuation">[</span><span class="token keyword">WHERE</span> whereCondition<span class="token punctuation">]</span>
<span class="token punctuation">[</span><span class="token keyword">GROUP</span> <span class="token keyword">BY</span> groupByTimeClause<span class="token punctuation">,</span> groupByLevelClause<span class="token punctuation">]</span>
<span class="token punctuation">[</span>FILL {PREVIOUS <span class="token operator">|</span> LINEAR <span class="token operator">|</span> constant}<span class="token punctuation">]</span>
<span class="token punctuation">[</span><span class="token keyword">LIMIT</span> rowLimit <span class="token keyword">OFFSET</span> rowOffset<span class="token punctuation">]</span>
<span class="token punctuation">[</span>ALIGN <span class="token keyword">BY</span> DEVICE<span class="token punctuation">]</span>
<span class="token punctuation">;</span>
intoItem
: <span class="token punctuation">[</span>ALIGNED<span class="token punctuation">]</span> intoDevicePath <span class="token string">&#39;(&#39;</span> intoMeasurementName <span class="token punctuation">[</span><span class="token string">&#39;,&#39;</span> intoMeasurementName<span class="token punctuation">]</span><span class="token operator">*</span> <span class="token string">&#39;)&#39;</span>
<span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="into-子句" tabindex="-1"><a class="header-anchor" href="#into-子句" aria-hidden="true">#</a> <code>INTO</code> 子句</h4><p><code>INTO</code> 子句由若干个 <code>intoItem</code> 构成。</p><p>每个 <code>intoItem</code> 由一个目标设备路径和一个包含若干目标物理量名的列表组成(与 <code>INSERT</code> 语句中的 <code>INTO</code> 子句写法类似)。</p><p>其中每个目标物理量名与目标设备路径组成一个目标序列,一个 <code>intoItem</code> 包含若干目标序列。例如:<code>root.sg_copy.d1(s1, s2)</code> 指定了两条目标序列 <code>root.sg_copy.d1.s1</code><code>root.sg_copy.d1.s2</code></p><p><code>INTO</code> 子句指定的目标序列要能够与查询结果集的列一一对应。具体规则如下:</p><ul><li><strong>按时间对齐</strong>(默认):全部 <code>intoItem</code> 包含的目标序列数量要与查询结果集的列数(除时间列外)一致,且按照表头从左到右的顺序一一对应。</li><li><strong>按设备对齐</strong>(使用 <code>ALIGN BY DEVICE</code>):全部 <code>intoItem</code> 中指定的目标设备数和查询的设备数(即 <code>FROM</code> 子句中路径模式匹配的设备数)一致,且按照结果集设备的输出顺序一一对应。 为每个目标设备指定的目标物理量数量要与查询结果集的列数(除时间和设备列外)一致,且按照表头从左到右的顺序一一对应。</li></ul><p>下面通过示例进一步说明:</p><ul><li><strong>示例 1</strong>(按时间对齐)</li></ul><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">&gt;</span> <span class="token keyword">select</span> s1, s2 into root.sg_copy.d1<span class="token punctuation">(</span>t1<span class="token punctuation">)</span>, root.sg_copy.d2<span class="token punctuation">(</span>t1, t2<span class="token punctuation">)</span>, root.sg_copy.d1<span class="token punctuation">(</span>t2<span class="token punctuation">)</span> from root.sg.d1, root.sg.d2<span class="token punctuation">;</span>
+--------------+-------------------+--------+
<span class="token operator">|</span> <span class="token builtin class-name">source</span> <span class="token function">column</span><span class="token operator">|</span> target timeseries<span class="token operator">|</span> written<span class="token operator">|</span>
+--------------+-------------------+--------+
<span class="token operator">|</span> root.sg.d1.s1<span class="token operator">|</span> root.sg_copy.d1.t1<span class="token operator">|</span> <span class="token number">8000</span><span class="token operator">|</span>
+--------------+-------------------+--------+
<span class="token operator">|</span> root.sg.d2.s1<span class="token operator">|</span> root.sg_copy.d2.t1<span class="token operator">|</span> <span class="token number">10000</span><span class="token operator">|</span>
+--------------+-------------------+--------+
<span class="token operator">|</span> root.sg.d1.s2<span class="token operator">|</span> root.sg_copy.d2.t2<span class="token operator">|</span> <span class="token number">12000</span><span class="token operator">|</span>
+--------------+-------------------+--------+
<span class="token operator">|</span> root.sg.d2.s2<span class="token operator">|</span> root.sg_copy.d1.t2<span class="token operator">|</span> <span class="token number">10000</span><span class="token operator">|</span>
+--------------+-------------------+--------+
Total line number <span class="token operator">=</span> <span class="token number">4</span>
It costs <span class="token number">0</span>.725s
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>该语句将 <code>root.sg</code> database 下四条序列的查询结果写入到 <code>root.sg_copy</code> database 下指定的四条序列中。注意,<code>root.sg_copy.d2(t1, t2)</code> 也可以写做 <code>root.sg_copy.d2(t1), root.sg_copy.d2(t2)</code></p><p>可以看到,<code>INTO</code> 子句的写法非常灵活,只要满足组合出的目标序列没有重复,且与查询结果列一一对应即可。</p><blockquote><p><code>CLI</code> 展示的结果集中,各列的含义如下:</p><ul><li><code>source column</code> 列表示查询结果的列名。</li><li><code>target timeseries</code> 表示对应列写入的目标序列。</li><li><code>written</code> 表示预期写入的数据量。</li></ul></blockquote><ul><li><strong>示例 2</strong>(按时间对齐)</li></ul><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">&gt;</span> <span class="token keyword">select</span> count<span class="token punctuation">(</span>s1 + s2<span class="token punctuation">)</span>, last_value<span class="token punctuation">(</span>s2<span class="token punctuation">)</span> into root.agg.count<span class="token punctuation">(</span>s1_add_s2<span class="token punctuation">)</span>, root.agg.last_value<span class="token punctuation">(</span>s2<span class="token punctuation">)</span> from root.sg.d1 group by <span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">0</span>, <span class="token number">100</span><span class="token punctuation">)</span>, 10ms<span class="token punctuation">)</span><span class="token punctuation">;</span>
+--------------------------------------+-------------------------+--------+
<span class="token operator">|</span> <span class="token builtin class-name">source</span> <span class="token function">column</span><span class="token operator">|</span> target timeseries<span class="token operator">|</span> written<span class="token operator">|</span>
+--------------------------------------+-------------------------+--------+
<span class="token operator">|</span> count<span class="token punctuation">(</span>root.sg.d1.s1 + root.sg.d1.s2<span class="token punctuation">)</span><span class="token operator">|</span> root.agg.count.s1_add_s2<span class="token operator">|</span> <span class="token number">10</span><span class="token operator">|</span>
+--------------------------------------+-------------------------+--------+
<span class="token operator">|</span> last_value<span class="token punctuation">(</span>root.sg.d1.s2<span class="token punctuation">)</span><span class="token operator">|</span> root.agg.last_value.s2<span class="token operator">|</span> <span class="token number">10</span><span class="token operator">|</span>
+--------------------------------------+-------------------------+--------+
Total line number <span class="token operator">=</span> <span class="token number">2</span>
It costs <span class="token number">0</span>.375s
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>该语句将聚合查询的结果存储到指定序列中。</p><ul><li><strong>示例 3</strong>(按设备对齐)</li></ul><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">&gt;</span> <span class="token keyword">select</span> s1, s2 into root.sg_copy.d1<span class="token punctuation">(</span>t1, t2<span class="token punctuation">)</span>, root.sg_copy.d2<span class="token punctuation">(</span>t1, t2<span class="token punctuation">)</span> from root.sg.d1, root.sg.d2 align by device<span class="token punctuation">;</span>
+--------------+--------------+-------------------+--------+
<span class="token operator">|</span> <span class="token builtin class-name">source</span> device<span class="token operator">|</span> <span class="token builtin class-name">source</span> <span class="token function">column</span><span class="token operator">|</span> target timeseries<span class="token operator">|</span> written<span class="token operator">|</span>
+--------------+--------------+-------------------+--------+
<span class="token operator">|</span> root.sg.d1<span class="token operator">|</span> s1<span class="token operator">|</span> root.sg_copy.d1.t1<span class="token operator">|</span> <span class="token number">8000</span><span class="token operator">|</span>
+--------------+--------------+-------------------+--------+
<span class="token operator">|</span> root.sg.d1<span class="token operator">|</span> s2<span class="token operator">|</span> root.sg_copy.d1.t2<span class="token operator">|</span> <span class="token number">11000</span><span class="token operator">|</span>
+--------------+--------------+-------------------+--------+
<span class="token operator">|</span> root.sg.d2<span class="token operator">|</span> s1<span class="token operator">|</span> root.sg_copy.d2.t1<span class="token operator">|</span> <span class="token number">12000</span><span class="token operator">|</span>
+--------------+--------------+-------------------+--------+
<span class="token operator">|</span> root.sg.d2<span class="token operator">|</span> s2<span class="token operator">|</span> root.sg_copy.d2.t2<span class="token operator">|</span> <span class="token number">9000</span><span class="token operator">|</span>
+--------------+--------------+-------------------+--------+
Total line number <span class="token operator">=</span> <span class="token number">4</span>
It costs <span class="token number">0</span>.625s
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>该语句同样是将 <code>root.sg</code> database 下四条序列的查询结果写入到 <code>root.sg_copy</code> database 下指定的四条序列中。但在按设备对齐中,<code>intoItem</code> 的数量必须和查询的设备数量一致,每个查询设备对应一个 <code>intoItem</code></p><blockquote><p>按设备对齐查询时,<code>CLI</code> 展示的结果集多出一列 <code>source device</code> 列表示查询的设备。</p></blockquote><ul><li><strong>示例 4</strong>(按设备对齐)</li></ul><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">&gt;</span> <span class="token keyword">select</span> s1 + s2 into root.expr.add<span class="token punctuation">(</span>d1s1_d1s2<span class="token punctuation">)</span>, root.expr.add<span class="token punctuation">(</span>d2s1_d2s2<span class="token punctuation">)</span> from root.sg.d1, root.sg.d2 align by device<span class="token punctuation">;</span>
+--------------+--------------+------------------------+--------+
<span class="token operator">|</span> <span class="token builtin class-name">source</span> device<span class="token operator">|</span> <span class="token builtin class-name">source</span> <span class="token function">column</span><span class="token operator">|</span> target timeseries<span class="token operator">|</span> written<span class="token operator">|</span>
+--------------+--------------+------------------------+--------+
<span class="token operator">|</span> root.sg.d1<span class="token operator">|</span> s1 + s2<span class="token operator">|</span> root.expr.add.d1s1_d1s2<span class="token operator">|</span> <span class="token number">10000</span><span class="token operator">|</span>
+--------------+--------------+------------------------+--------+
<span class="token operator">|</span> root.sg.d2<span class="token operator">|</span> s1 + s2<span class="token operator">|</span> root.expr.add.d2s1_d2s2<span class="token operator">|</span> <span class="token number">10000</span><span class="token operator">|</span>
+--------------+--------------+------------------------+--------+
Total line number <span class="token operator">=</span> <span class="token number">2</span>
It costs <span class="token number">0</span>.532s
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>该语句将表达式计算的结果存储到指定序列中。</p><h4 id="使用变量占位符" tabindex="-1"><a class="header-anchor" href="#使用变量占位符" aria-hidden="true">#</a> 使用变量占位符</h4><p>特别地,可以使用变量占位符描述目标序列与查询序列之间的对应规律,简化语句书写。目前支持以下两种变量占位符:</p><ul><li>后缀复制符 <code>::</code>:复制查询设备后缀(或物理量),表示从该层开始一直到设备的最后一层(或物理量),目标设备的节点名(或物理量名)与查询的设备对应的节点名(或物理量名)相同。</li><li>单层节点匹配符 <code>${i}</code>:表示目标序列当前层节点名与查询序列的第<code>i</code>层节点名相同。比如,对于路径<code>root.sg1.d1.s1</code>而言,<code>${1}</code>表示<code>sg1</code><code>${2}</code>表示<code>d1</code><code>${3}</code>表示<code>s1</code></li></ul><p>在使用变量占位符时,<code>intoItem</code>与查询结果集列的对应关系不能存在歧义,具体情况分类讨论如下:</p><h5 id="按时间对齐-默认" tabindex="-1"><a class="header-anchor" href="#按时间对齐-默认" aria-hidden="true">#</a> 按时间对齐(默认)</h5><blockquote><p>注:变量占位符<strong>只能描述序列与序列之间的对应关系</strong>,如果查询中包含聚合、表达式计算,此时查询结果中的列无法与某个序列对应,因此目标设备和目标物理量都不能使用变量占位符。</p></blockquote><h6 id="_1-目标设备不使用变量占位符-目标物理量列表使用变量占位符" tabindex="-1"><a class="header-anchor" href="#_1-目标设备不使用变量占位符-目标物理量列表使用变量占位符" aria-hidden="true">#</a> (1)目标设备不使用变量占位符 &amp; 目标物理量列表使用变量占位符</h6><p><strong>限制:</strong></p><ol><li>每个 <code>intoItem</code> 中,物理量列表的长度必须为 1。<br>(如果长度可以大于1,例如 <code>root.sg1.d1(::, s1)</code>,无法确定具体哪些列与<code>::</code>匹配)</li><li><code>intoItem</code> 数量为 1,或与查询结果集列数一致。<br>(在每个目标物理量列表长度均为 1 的情况下,若 <code>intoItem</code> 只有 1 个,此时表示全部查询序列写入相同设备;若 <code>intoItem</code> 数量与查询序列一致,则表示为每个查询序列指定一个目标设备;若 <code>intoItem</code> 大于 1 小于查询序列数,此时无法与查询序列一一对应)</li></ol><p><strong>匹配方法:</strong> 每个查询序列指定目标设备,而目标物理量根据变量占位符生成。</p><p><strong>示例:</strong></p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> s1<span class="token punctuation">,</span> s2
<span class="token keyword">into</span> root<span class="token punctuation">.</span>sg_copy<span class="token punctuation">.</span>d1<span class="token punctuation">(</span>::<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>sg_copy<span class="token punctuation">.</span>d2<span class="token punctuation">(</span>s1<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>sg_copy<span class="token punctuation">.</span>d1<span class="token punctuation">(</span>${<span class="token number">3</span>}<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>sg_copy<span class="token punctuation">.</span>d2<span class="token punctuation">(</span>::<span class="token punctuation">)</span>
<span class="token keyword">from</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span>d1<span class="token punctuation">,</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span>d2<span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>该语句等价于:</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> s1<span class="token punctuation">,</span> s2
<span class="token keyword">into</span> root<span class="token punctuation">.</span>sg_copy<span class="token punctuation">.</span>d1<span class="token punctuation">(</span>s1<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>sg_copy<span class="token punctuation">.</span>d2<span class="token punctuation">(</span>s1<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>sg_copy<span class="token punctuation">.</span>d1<span class="token punctuation">(</span>s2<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>sg_copy<span class="token punctuation">.</span>d2<span class="token punctuation">(</span>s2<span class="token punctuation">)</span>
<span class="token keyword">from</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span>d1<span class="token punctuation">,</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span>d2<span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>可以看到,在这种情况下,语句并不能得到很好地简化。</p><h6 id="_2-目标设备使用变量占位符-目标物理量列表不使用变量占位符" tabindex="-1"><a class="header-anchor" href="#_2-目标设备使用变量占位符-目标物理量列表不使用变量占位符" aria-hidden="true">#</a> (2)目标设备使用变量占位符 &amp; 目标物理量列表不使用变量占位符</h6><p><strong>限制:</strong> 全部 <code>intoItem</code> 中目标物理量的数量与查询结果集列数一致。</p><p><strong>匹配方式:</strong> 为每个查询序列指定了目标物理量,目标设备根据对应目标物理量所在 <code>intoItem</code> 的目标设备占位符生成。</p><p><strong>示例:</strong></p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> d1<span class="token punctuation">.</span>s1<span class="token punctuation">,</span> d1<span class="token punctuation">.</span>s2<span class="token punctuation">,</span> d2<span class="token punctuation">.</span>s3<span class="token punctuation">,</span> d3<span class="token punctuation">.</span>s4
<span class="token keyword">into</span> ::<span class="token punctuation">(</span>s1_1<span class="token punctuation">,</span> s2_2<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span>d2_2<span class="token punctuation">(</span>s3_3<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>${<span class="token number">2</span>}_copy<span class="token punctuation">.</span>::<span class="token punctuation">(</span>s4<span class="token punctuation">)</span>
<span class="token keyword">from</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h6 id="_3-目标设备使用变量占位符-目标物理量列表使用变量占位符" tabindex="-1"><a class="header-anchor" href="#_3-目标设备使用变量占位符-目标物理量列表使用变量占位符" aria-hidden="true">#</a> (3)目标设备使用变量占位符 &amp; 目标物理量列表使用变量占位符</h6><p><strong>限制:</strong> <code>intoItem</code> 只有一个且物理量列表的长度为 1。</p><p><strong>匹配方式:</strong> 每个查询序列根据变量占位符可以得到一个目标序列。</p><p><strong>示例:</strong></p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> <span class="token operator">*</span> <span class="token keyword">into</span> root<span class="token punctuation">.</span>sg_bk<span class="token punctuation">.</span>::<span class="token punctuation">(</span>::<span class="token punctuation">)</span> <span class="token keyword">from</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span><span class="token operator">*</span><span class="token operator">*</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><code>root.sg</code> 下全部序列的查询结果写到 <code>root.sg_bk</code>,设备名后缀和物理量名保持不变。</p><h5 id="按设备对齐-使用-align-by-device" tabindex="-1"><a class="header-anchor" href="#按设备对齐-使用-align-by-device" aria-hidden="true">#</a> 按设备对齐(使用 <code>ALIGN BY DEVICE</code></h5><blockquote><p>注:变量占位符<strong>只能描述序列与序列之间的对应关系</strong>,如果查询中包含聚合、表达式计算,此时查询结果中的列无法与某个物理量对应,因此目标物理量不能使用变量占位符。</p></blockquote><h6 id="_1-目标设备不使用变量占位符-目标物理量列表使用变量占位符-1" tabindex="-1"><a class="header-anchor" href="#_1-目标设备不使用变量占位符-目标物理量列表使用变量占位符-1" aria-hidden="true">#</a> (1)目标设备不使用变量占位符 &amp; 目标物理量列表使用变量占位符</h6><p><strong>限制:</strong> 每个 <code>intoItem</code> 中,如果物理量列表使用了变量占位符,则列表的长度必须为 1。</p><p><strong>匹配方法:</strong> 每个查询序列指定目标设备,而目标物理量根据变量占位符生成。</p><p><strong>示例:</strong></p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> s1<span class="token punctuation">,</span> s2<span class="token punctuation">,</span> s3<span class="token punctuation">,</span> s4
<span class="token keyword">into</span> root<span class="token punctuation">.</span>backup_sg<span class="token punctuation">.</span>d1<span class="token punctuation">(</span>s1<span class="token punctuation">,</span> s2<span class="token punctuation">,</span> s3<span class="token punctuation">,</span> s4<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>backup_sg<span class="token punctuation">.</span>d2<span class="token punctuation">(</span>::<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span>d3<span class="token punctuation">(</span>backup_${<span class="token number">4</span>}<span class="token punctuation">)</span>
<span class="token keyword">from</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span>d1<span class="token punctuation">,</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span>d2<span class="token punctuation">,</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span>d3
align <span class="token keyword">by</span> device<span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h6 id="_2-目标设备使用变量占位符-目标物理量列表不使用变量占位符-1" tabindex="-1"><a class="header-anchor" href="#_2-目标设备使用变量占位符-目标物理量列表不使用变量占位符-1" aria-hidden="true">#</a> (2)目标设备使用变量占位符 &amp; 目标物理量列表不使用变量占位符</h6><p><strong>限制:</strong> <code>intoItem</code> 只有一个。(如果出现多个带占位符的 <code>intoItem</code>,我们将无法得知每个 <code>intoItem</code> 需要匹配哪几个源设备)</p><p><strong>匹配方式:</strong> 每个查询设备根据变量占位符得到一个目标设备,每个设备下结果集各列写入的目标物理量由目标物理量列表指定。</p><p><strong>示例:</strong></p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> <span class="token function">avg</span><span class="token punctuation">(</span>s1<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">sum</span><span class="token punctuation">(</span>s2<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token function">sum</span><span class="token punctuation">(</span>s3<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">count</span><span class="token punctuation">(</span>s4<span class="token punctuation">)</span>
<span class="token keyword">into</span> root<span class="token punctuation">.</span>agg_${<span class="token number">2</span>}<span class="token punctuation">.</span>::<span class="token punctuation">(</span>avg_s1<span class="token punctuation">,</span> sum_s2_add_s3<span class="token punctuation">,</span> count_s4<span class="token punctuation">)</span>
<span class="token keyword">from</span> root<span class="token punctuation">.</span><span class="token operator">*</span><span class="token operator">*</span>
align <span class="token keyword">by</span> device<span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h6 id="_3-目标设备使用变量占位符-目标物理量列表使用变量占位符-1" tabindex="-1"><a class="header-anchor" href="#_3-目标设备使用变量占位符-目标物理量列表使用变量占位符-1" aria-hidden="true">#</a> (3)目标设备使用变量占位符 &amp; 目标物理量列表使用变量占位符</h6><p><strong>限制:</strong> <code>intoItem</code> 只有一个且物理量列表的长度为 1。</p><p><strong>匹配方式:</strong> 每个查询序列根据变量占位符可以得到一个目标序列。</p><p><strong>示例:</strong></p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> <span class="token operator">*</span> <span class="token keyword">into</span> ::<span class="token punctuation">(</span>backup_${<span class="token number">4</span>}<span class="token punctuation">)</span> <span class="token keyword">from</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span><span class="token operator">*</span><span class="token operator">*</span> align <span class="token keyword">by</span> device<span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><code>root.sg</code> 下每条序列的查询结果写到相同设备下,物理量名前加<code>backup_</code></p><h4 id="指定目标序列为对齐序列" tabindex="-1"><a class="header-anchor" href="#指定目标序列为对齐序列" aria-hidden="true">#</a> 指定目标序列为对齐序列</h4><p>通过 <code>ALIGNED</code> 关键词可以指定写入的目标设备为对齐写入,每个 <code>intoItem</code> 可以独立设置。</p><p><strong>示例:</strong></p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> s1<span class="token punctuation">,</span> s2 <span class="token keyword">into</span> root<span class="token punctuation">.</span>sg_copy<span class="token punctuation">.</span>d1<span class="token punctuation">(</span>t1<span class="token punctuation">,</span> t2<span class="token punctuation">)</span><span class="token punctuation">,</span> aligned root<span class="token punctuation">.</span>sg_copy<span class="token punctuation">.</span>d2<span class="token punctuation">(</span>t1<span class="token punctuation">,</span> t2<span class="token punctuation">)</span> <span class="token keyword">from</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span>d1<span class="token punctuation">,</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span>d2 align <span class="token keyword">by</span> device<span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>该语句指定了 <code>root.sg_copy.d1</code> 是非对齐设备,<code>root.sg_copy.d2</code>是对齐设备。</p><h4 id="不支持使用的查询子句" tabindex="-1"><a class="header-anchor" href="#不支持使用的查询子句" aria-hidden="true">#</a> 不支持使用的查询子句</h4><ul><li><code>SLIMIT</code><code>SOFFSET</code>:查询出来的列不确定,功能不清晰,因此不支持。</li><li><code>LAST</code>查询、<code>GROUP BY TAGS</code><code>DISABLE ALIGN</code>:表结构和写入结构不一致,因此不支持。</li></ul><h4 id="其他要注意的点" tabindex="-1"><a class="header-anchor" href="#其他要注意的点" aria-hidden="true">#</a> 其他要注意的点</h4><ul><li>对于一般的聚合查询,时间戳是无意义的,约定使用 0 来存储。</li><li>当目标序列存在时,需要保证源序列和目标时间序列的数据类型兼容。关于数据类型的兼容性,查看文档 <a href="/zh/UserGuide/V1.1.x/Data-Concept/Data-Type.html#%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E5%85%BC%E5%AE%B9%E6%80%A7" class="">数据类型</a></li><li>当目标序列不存在时,系统将自动创建目标序列(包括 database)。</li><li>当查询的序列不存在或查询的序列不存在数据,则不会自动创建目标序列。</li></ul><h3 id="应用举例" tabindex="-1"><a class="header-anchor" href="#应用举例" aria-hidden="true">#</a> 应用举例</h3><h4 id="实现-iotdb-内部-etl" tabindex="-1"><a class="header-anchor" href="#实现-iotdb-内部-etl" aria-hidden="true">#</a> 实现 IoTDB 内部 ETL</h4><p>对原始数据进行 ETL 处理后写入新序列。</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>IOTDB <span class="token operator">&gt;</span> SELECT preprocess_udf<span class="token punctuation">(</span>s1, s2<span class="token punctuation">)</span> INTO ::<span class="token punctuation">(</span>preprocessed_s1, preprocessed_s2<span class="token punctuation">)</span> FROM root.sg.* ALIGN BY DEIVCE<span class="token punctuation">;</span>
+--------------+-------------------+---------------------------+--------+
<span class="token operator">|</span> <span class="token builtin class-name">source</span> device<span class="token operator">|</span> <span class="token builtin class-name">source</span> <span class="token function">column</span><span class="token operator">|</span> target timeseries<span class="token operator">|</span> written<span class="token operator">|</span>
+--------------+-------------------+---------------------------+--------+
<span class="token operator">|</span> root.sg.d1<span class="token operator">|</span> preprocess_udf<span class="token punctuation">(</span>s1<span class="token punctuation">)</span><span class="token operator">|</span> root.sg.d1.preprocessed_s1<span class="token operator">|</span> <span class="token number">8000</span><span class="token operator">|</span>
+--------------+-------------------+---------------------------+--------+
<span class="token operator">|</span> root.sg.d1<span class="token operator">|</span> preprocess_udf<span class="token punctuation">(</span>s2<span class="token punctuation">)</span><span class="token operator">|</span> root.sg.d1.preprocessed_s2<span class="token operator">|</span> <span class="token number">10000</span><span class="token operator">|</span>
+--------------+-------------------+---------------------------+--------+
<span class="token operator">|</span> root.sg.d2<span class="token operator">|</span> preprocess_udf<span class="token punctuation">(</span>s1<span class="token punctuation">)</span><span class="token operator">|</span> root.sg.d2.preprocessed_s1<span class="token operator">|</span> <span class="token number">11000</span><span class="token operator">|</span>
+--------------+-------------------+---------------------------+--------+
<span class="token operator">|</span> root.sg.d2<span class="token operator">|</span> preprocess_udf<span class="token punctuation">(</span>s2<span class="token punctuation">)</span><span class="token operator">|</span> root.sg.d2.preprocessed_s2<span class="token operator">|</span> <span class="token number">9000</span><span class="token operator">|</span>
+--------------+-------------------+---------------------------+--------+
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>以上语句使用自定义函数对数据进行预处理,将预处理后的结果持久化存储到新序列中。</p><h4 id="查询结果存储" tabindex="-1"><a class="header-anchor" href="#查询结果存储" aria-hidden="true">#</a> 查询结果存储</h4><p>将查询结果进行持久化存储,起到类似物化视图的作用。</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>IOTDB <span class="token operator">&gt;</span> SELECT count<span class="token punctuation">(</span>s1<span class="token punctuation">)</span>, last_value<span class="token punctuation">(</span>s1<span class="token punctuation">)</span> INTO root.sg.agg_<span class="token variable">${2}</span><span class="token punctuation">(</span>count_s1, last_value_s1<span class="token punctuation">)</span> FROM root.sg1.d1 GROUP BY <span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">0</span>, <span class="token number">10000</span><span class="token punctuation">)</span>, 10ms<span class="token punctuation">)</span><span class="token punctuation">;</span>
+--------------------------+-----------------------------+--------+
<span class="token operator">|</span> <span class="token builtin class-name">source</span> <span class="token function">column</span><span class="token operator">|</span> target timeseries<span class="token operator">|</span> written<span class="token operator">|</span>
+--------------------------+-----------------------------+--------+
<span class="token operator">|</span> count<span class="token punctuation">(</span>root.sg.d1.s1<span class="token punctuation">)</span><span class="token operator">|</span> root.sg.agg_d1.count_s1<span class="token operator">|</span> <span class="token number">1000</span><span class="token operator">|</span>
+--------------------------+-----------------------------+--------+
<span class="token operator">|</span> last_value<span class="token punctuation">(</span>root.sg.d1.s2<span class="token punctuation">)</span><span class="token operator">|</span> root.sg.agg_d1.last_value_s2<span class="token operator">|</span> <span class="token number">1000</span><span class="token operator">|</span>
+--------------------------+-----------------------------+--------+
Total line number <span class="token operator">=</span> <span class="token number">2</span>
It costs <span class="token number">0</span>.115s
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>以上语句将降采样查询的结果持久化存储到新序列中。</p><h4 id="非对齐序列转对齐序列" tabindex="-1"><a class="header-anchor" href="#非对齐序列转对齐序列" aria-hidden="true">#</a> 非对齐序列转对齐序列</h4><p>对齐序列从 0.13 版本开始支持,可以通过该功能将非对齐序列的数据写入新的对齐序列中。</p><p><strong>注意:</strong> 建议配合使用 <code>LIMIT &amp; OFFSET</code> 子句或 <code>WHERE</code> 子句(时间过滤条件)对数据进行分批,防止单次操作的数据量过大。</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>IOTDB <span class="token operator">&gt;</span> SELECT s1, s2 INTO ALIGNED root.sg1.aligned_d<span class="token punctuation">(</span>s1, s2<span class="token punctuation">)</span> FROM root.sg1.non_aligned_d WHERE <span class="token function">time</span> <span class="token operator">&gt;=</span> <span class="token number">0</span> and <span class="token function">time</span> <span class="token operator">&lt;</span> <span class="token number">10000</span><span class="token punctuation">;</span>
+--------------------------+----------------------+--------+
<span class="token operator">|</span> <span class="token builtin class-name">source</span> <span class="token function">column</span><span class="token operator">|</span> target timeseries<span class="token operator">|</span> written<span class="token operator">|</span>
+--------------------------+----------------------+--------+
<span class="token operator">|</span> root.sg1.non_aligned_d.s1<span class="token operator">|</span> root.sg1.aligned_d.s1<span class="token operator">|</span> <span class="token number">10000</span><span class="token operator">|</span>
+--------------------------+----------------------+--------+
<span class="token operator">|</span> root.sg1.non_aligned_d.s2<span class="token operator">|</span> root.sg1.aligned_d.s2<span class="token operator">|</span> <span class="token number">10000</span><span class="token operator">|</span>
+--------------------------+----------------------+--------+
Total line number <span class="token operator">=</span> <span class="token number">2</span>
It costs <span class="token number">0</span>.375s
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>以上语句将一组非对齐的序列的数据迁移到一组对齐序列。</p><h3 id="相关用户权限" tabindex="-1"><a class="header-anchor" href="#相关用户权限" aria-hidden="true">#</a> 相关用户权限</h3><p>用户必须有下列权限才能正常执行查询写回语句:</p><ul><li>所有 <code>SELECT</code> 子句中源序列的 <code>READ_TIMESERIES</code> 权限。</li><li>所有 <code>INTO</code> 子句中目标序列 <code>INSERT_TIMESERIES</code> 权限。</li></ul><p>更多用户权限相关的内容,请参考<a href="/zh/UserGuide/V1.1.x/Administration-Management/Administration.html" class="">权限管理语句</a></p><h3 id="相关配置参数" tabindex="-1"><a class="header-anchor" href="#相关配置参数" aria-hidden="true">#</a> 相关配置参数</h3><ul><li><p><code>select_into_insert_tablet_plan_row_limit</code></p><table><thead><tr><th>参数名</th><th>select_into_insert_tablet_plan_row_limit</th></tr></thead><tbody><tr><td>描述</td><td>写入过程中每一批 <code>Tablet</code> 的最大行数</td></tr><tr><td>类型</td><td>int32</td></tr><tr><td>默认值</td><td>10000</td></tr><tr><td>改后生效方式</td><td>重启后生效</td></tr></tbody></table></li></ul></div><!----><footer class="page-meta"><div class="meta-item edit-link"><a href="https://github.com/apache/iotdb/edit/rel/1.1/docs/zh/UserGuide/Query-Data/Select-Into.md" rel="noopener noreferrer" target="_blank" aria-label="发现错误?在 GitHub 上编辑此页" class="nav-link label"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon edit-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="edit icon"><path d="M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"></path><path d="M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"></path></svg><!--]-->发现错误?在 GitHub 上编辑此页<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></div><div class="meta-item git-info"><!----><!----></div></footer><nav class="page-nav"><a href="/zh/UserGuide/V1.1.x/Query-Data/Pagination.html" class="nav-link prev" aria-label="结果集分页"><div class="hint"><span class="arrow start"></span>上一页</div><div class="link"><!---->结果集分页</div></a><a href="/zh/UserGuide/V1.1.x/Query-Data/Continuous-Query.html" class="nav-link next" aria-label="连续查询"><div class="hint">下一页<span class="arrow end"></span></div><div class="link">连续查询<!----></div></a></nav><!----><!----><!--]--></main><!--]--><footer style="padding-bottom:2rem;"><span id="doc-version" style="display:none;">rel/1.1</span><p style="text-align:center;color:#909399;font-size:12px;margin:0 30px;">Copyright © 2023 The Apache Software Foundation.<br> Apache and the Apache feather logo are trademarks of The Apache Software Foundation</p><p style="text-align:center;margin-top:10px;color:#909399;font-size:12px;margin:0 30px;"><strong>Have a question?</strong> Connect with us on QQ, WeChat, or Slack. <a href="https://github.com/apache/iotdb/issues/1995">Join the community</a> now.</p><p style="text-align:center;margin-top:10px;color:#909399;font-size:12px;margin:0 30px;"> We use <a href="https://analytics.google.com">Google Analytics</a> to collect anonymous, aggregated usage information. </p></footer></div><!--]--><!--]--><!----><!--]--></div>
<script type="module" src="/assets/app-cbe6e1e7.js" defer></script>
</body>
</html>