import{_ as o,r,o as s,c as h,a as d,d as e,e as n,b as a,w as i}from"./app-dXzqLio8.js";const l={},c=e("h2",{id:"原生接口写入",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#原生接口写入","aria-hidden":"true"},"#"),n(" 原生接口写入")],-1),u=e("p",null,"原生接口 （Session） 是目前IoTDB使用最广泛的系列接口，包含多种写入接口，适配不同的数据采集场景，性能高效且支持多语言。",-1),_=e("h3",{id:"多语言接口写入",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#多语言接口写入","aria-hidden":"true"},"#"),n(" 多语言接口写入")],-1),m=e("h3",{id:"java",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#java","aria-hidden":"true"},"#"),n(" Java")],-1),p=e("br",null,null,-1),f=e("h3",{id:"python",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#python","aria-hidden":"true"},"#"),n(" Python")],-1),A=e("h3",{id:"c",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#c","aria-hidden":"true"},"#"),n(" C++")],-1),g=e("h3",{id:"go",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#go","aria-hidden":"true"},"#"),n(" Go")],-1);function I(x,P){const t=r("RouterLink");return s(),h("div",null,[d(`

    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.

`),c,u,_,e("ul",null,[e("li",null,[m,e("p",null,[n("使用Java接口写入之前，你需要先建立连接，参考 "),a(t,{to:"/zh/UserGuide/V1.1.x/API/Programming-Java-Native-API.html"},{default:i(()=>[n("Java原生接口")]),_:1}),n("。"),p,n(" 之后通过 "),a(t,{to:"/zh/UserGuide/V1.1.x/API/Programming-Java-Native-API.html#%E6%95%B0%E6%8D%AE%E5%86%99%E5%85%A5"},{default:i(()=>[n(" JAVA 数据操作接口（DML）")]),_:1}),n("写入。")])]),e("li",null,[f,e("p",null,[n("参考 "),a(t,{to:"/zh/UserGuide/V1.1.x/API/Programming-Python-Native-API.html#%E6%95%B0%E6%8D%AE%E5%86%99%E5%85%A5"},{default:i(()=>[n(" Python 数据操作接口（DML）")]),_:1})])]),e("li",null,[A,e("p",null,[n("参考 "),a(t,{to:"/zh/UserGuide/V1.1.x/API/Programming-Cpp-Native-API.html"},{default:i(()=>[n(" C++ 数据操作接口（DML）")]),_:1})])]),e("li",null,[g,e("p",null,[n("参考 "),a(t,{to:"/zh/UserGuide/V1.1.x/API/Programming-Go-Native-API.html"},{default:i(()=>[n("Go 原生接口")]),_:1})])])])])}const N=o(l,[["render",I],["__file","Session.html.vue"]]);export{N as default};
