Tüm Ürünler
Search
Belge Merkezi

ApsaraDB for SelectDB:Stream Load

Son Güncelleme:Oct 08, 2026

Stream Load, yerel dosyaları veya veri akışlarını ApsaraDB for SelectDB'ye yüklemek için kullanılan eşzamanlı HTTP tabanlı bir yöntemdir. Bir HTTP PUT isteği gönderin; sonuç yanıt gövdesinde anında döner, yoklama (polling) gerekmez. Desteklenen biçimler: CSV, JSON, Parquet ve ORC.

Önemli

İçe aktarmanın başarılı olup olmadığını belirlemek için her zaman yanıt gövdesindeki Status alanını kontrol edin. HTTP 200 yanıtı yalnızca isteğin alındığı anlamına gelir; gerçek içe aktarma sonucu gövdede yer alır.

Ön koşullar

Başlamadan önce aşağıdaki öğelere sahip olduğunuzdan emin olun:

  • Stream Load'u çalıştıran makine ile SelectDB örneğiniz arasında ağ bağlantısı

  • SelectDB örneği için oturum açma kimlik bilgileri (kullanıcı adı ve parola)

Ağ erişimini ayarlayın:

  1. Makineniz SelectDB örneğiyle aynı Virtual Private Cloud (VPC) içinde değilse, genel bir uç nokta için başvurun.

  2. Makinenizin IP adreslerini örnek izin listesine ekleyin.

  3. Makinenizde giden trafiğe yönelik bir izin listesi varsa, SelectDB örneğinin IP aralığını bu listeye ekleyin:

Kullanım notları

Tek bir Stream Load işi birkaç yüz MB ile 1 GB arasında veri yazabilir. Küçük miktarlarda veriyi yüksek sıklıkla yüklemek örnek performansını düşürür ve tablo kilitlenmelerine neden olabilir. Yükleme sıklığını azaltmak için toplu işlemeyi kullanın:

  • Uygulama tarafında toplu işleme: Stream Load isteği göndermeden önce verileri uygulamanızda toplayın.

  • Sunucu tarafında toplu işleme: SelectDB'nin gelen istekleri sunucu tarafında toplu olarak işlemesine olanak tanımak için Group Commit özelliğini kullanın.

Stream Load'un çalışma şekli

  1. Veri dosyası eklenmiş bir HTTP PUT isteği gönderin.

  2. SelectDB veriyi eşzamanlı olarak işler ve hedef tabloya yazar.

  3. Yanıt gövdesi, bir Status alanı ve satır düzeyi ölçümleri dahil olmak üzere içe aktarma sonucunu içerir.

Stream Load ile veri yükleme

Stream Load HTTP PUT isteklerini kullanır. Aşağıdaki örnekler curl kullanır, ancak herhangi bir HTTP istemcisi çalışır.

Söz dizimi

curl --location-trusted \
  -u <username>:<password> \
  -H "expect:100-continue" \
  [-H "<header-key>:<header-value>"] \
  -T <file-path> \
  -XPUT http://<host>:<port>/api/<db_name>/<table_name>/_stream_load

Yer tutucuları gerçek değerlerinizle değiştirin:

Yer Tutucu Açıklama Örnek
<username> SelectDB kullanıcı adı admin
<password> SelectDB parolası your-password
<host> Örneğin VPC uç noktası veya genel uç noktası selectdb-cn-xxx-fe.selectdbfe.rds.aliyuncs.com
<port> HTTP bağlantı noktası. Varsayılan: 8080 8080
<db_name> Hedef veritabanı adı test_db
<table_name> Hedef tablo adı test_table
<file-path> Yerel veri dosyasının yolu ./data.csv

Doğru uç noktayı seçme:

  • Aynı VPC: VPC uç noktasını kullanın.

  • Farklı VPC veya Alibaba Cloud dışı: Genel uç noktayı kullanın. Her iki uç nokta da SelectDB konsolundaki örnek ayrıntıları sayfasında listelenir.

İstek üstbilgileri

İçe aktarma seçeneklerini -H "key:value" kullanarak HTTP üstbilgileri olarak ayarlayın.

Üstbilgi Varsayılan Açıklama
label Sistem tarafından oluşturulur Bu içe aktarma işi için benzersiz kimlik. Yinelenen içe aktarmaları önlemek amacıyla aynı veri toplu işi için yeniden denemelerde aynı etiketi kullanın (En Çok Bir Kez semantiği). İlgili iş CANCELLED durumuna ulaştığında etiketler yeniden kullanılabilir.
format CSV Veri biçimi. Desteklenen değerler: CSV, JSON, PARQUET, ORC, csv_with_names (ilk satırı atlar), csv_with_names_and_types (ilk iki satırı atlar). Biçime özel parametreler için bkz. Dosya biçimleri.
column_separator \t Sütun ayırıcısı. Çok karakterli ayırıcıları destekler. Yazdırılamayan karakterler için \x ön ekiyle hex kullanın; örneğin, Hive'in \x01 ayırıcısı: -H "column_separator:\x01".
line_delimiter \n Satır ayırıcısı. Windows'ta \r\n kullanın. Çok karakterli ayırıcıları destekler.
compress_type Yok Sıkıştırma biçimi. Desteklenen değerler: gz, lzo, bz2, lz4, lzop, deflate. Yalnızca CSV ve JSON dosyaları için desteklenir.
max_filter_ratio 0 Veri kalitesi kontrollerini geçemeyen maksimum satır oranı. Aralık: [0, 1]. Varsayılan 0 sıfır tolerans anlamına gelir; hatalı herhangi bir satır işi başarısız kılar. Bazı satırların atlanmasına izin vermek için 0 değerinden büyük bir değer ayarlayın.
strict_mode false true olduğunda, sütun türü dönüştürme sırasında sıkı tür denetimi uygular. Null olmayan kaynak değerin NULL'a dönüştüğü satırlar filtrelenir.
cloud_cluster Örnek varsayılanı İçe aktarmayı hangi hesaplama kümesinin işleyeceğini belirtir. Varsayılan bir küme ayarlanmamışsa, SelectDB izinlerinize göre otomatik olarak bir küme seçer.
load_to_single_tablet false true olduğunda, tüm verileri hedef bölüm içindeki tek bir tablete yazar. Yalnızca rastgele gruplamaya sahip Duplicate Key tabloları için geçerlidir. Yüksek eşzamanlılık içeren içe aktarmalar için aktarım hızını artırır.
where Yok SQL filtre koşulu. Eşleşmeyen satırlar içe aktarmadan hariç tutulur ve NumberUnselectedRows içinde sayılır, ancak filtre oranı hesaplamasına dahil edilmez.
partitions Yok İçe aktarmayı belirtilen bölümlerle sınırlar. Bu bölümlerin dışındaki satırlar hariç tutulur ve dpp.abnorm.ALL içinde sayılır (bu değer NumberFilteredRows içinde yansıtılır).
columns Yok Kaynak sütunları eşler ve dönüştürür. SELECT ifadeleriyle aynı söz dizimini kullanarak sütun yeniden sıralamasını ve SQL ifade dönüşümlerini destekler.
merge_type APPEND Veri birleştirme davranışı. Seçenekler: APPEND (varsayılan, normal yazma), MERGE (Silme Bayrağı sütununu işaretlemek için delete ile birlikte kullanın), DELETE (tüm satırları silme olarak değerlendirir). MERGE ve DELETE yalnızca Unique Key tablolarında desteklenir.
delete Yok Satırları silindi olarak işaretlemek için SQL koşulu. Yalnızca merge_type değeri MERGE olduğunda kullanılır.
function_column.sequence_col Yok Sıra sütunlarına sahip Unique Key tabloları için. Satır değiştirme sırasını belirleyen sütunu (kaynak verilerden veya tablo şemasından) belirtir.
exec_mem_limit 2147483648 İçe aktarma işi için bellek sınırı (bayt cinsinden). Varsayılan: 2 GiB.
timeout 600 İçe aktarma zaman aşımı (saniye cinsinden). Aralık: [1, 259200]. İş bu sınırı aşarsa otomatik olarak iptal edilir.
timezone Asia/Shanghai İçe aktarma sırasında saatle ilgili işlevler için saat dilimi. IANA saat dilimi adlarını kullanır.
two_phase_commit false true olduğunda, veriler yazılır ancak işlemi manuel olarak onaylayana kadar görünmez kalır. İşlem durumu onaylanana kadar PRECOMMITTED olarak kalır. Atomik, ya hep ya hiç içe aktarma davranışı için kullanışlıdır.
jsonpaths Yok JSON alanı çıkarma deseni, örneğin ["$.status", "$.res.id"]. JSON yapısı doğrudan tablo sütunlarıyla eşleşmediğinde kullanılır. Bu olmadan anahtarların sütun adlarıyla eşleşmesi gerekir (sıra farklı olabilir).
json_root "" (tüm nesne) Ayrıştırma için kök olarak bir alt nesneyi seçen JSONPath ifadesi.
read_json_by_line false true olduğunda, her satırı ayrı bir JSON nesnesi olarak değerlendirir. false olduğunda, tüm dosya tek bir JSON değeri veya dizi olarak ayrıştırılır.
strip_outer_array false true olduğunda, bir JSON dizisinden dıştaki diziyi çıkarır ve her öğeyi ayrı bir satır olarak içe aktarır. false olduğunda, tüm dizi tek bir kayıt olarak içe aktarılır. Dizi olmayan JSON biçimi, dizi biçimine kıyasla önemli ölçüde daha yüksek performans sağlar.

Örnek

data.csv dosyasını test_db içindeki test_table tablosuna aktarın:

curl --location-trusted \
  -u admin:admin_123 \
  -T data.csv \
  -H "label:123" \
  -H "expect:100-continue" \
  http://selectdb-cn-h033cjs****-fe.selectdbfe.pre.rds.aliyuncs.com:8080/api/test_db/test_table/_stream_load

Yanıt

Stream Load sonucu eşzamanlı olarak döndürür. Başarıyı belirlemek için HTTP durum kodunu değil, Status alanını kontrol edin.

{
    "TxnId": 17,
    "Label": "707717c0-271a-44c5-be0b-4e71bfeacaa5",
    "Status": "Success",
    "Message": "OK",
    "NumberTotalRows": 5,
    "NumberLoadedRows": 5,
    "NumberFilteredRows": 0,
    "NumberUnselectedRows": 0,
    "LoadBytes": 28,
    "LoadTimeMs": 27,
    "BeginTxnTimeMs": 0,
    "StreamLoadPutTimeMs": 2,
    "ReadDataTimeMs": 0,
    "WriteDataTimeMs": 3,
    "CommitAndPublishTimeMs": 18
}
Alan Açıklama
TxnId İşlem kimliği.
Label İçe aktarma etiketi. Özel veya sistem tarafından oluşturulur.
Status İçe aktarma sonucu. Success: tamamlandı. Publish Timeout: tamamlandı ancak veriler kısa süreliğine görünmez olabilir; yeniden denemeyin. Label Already Exists: yinelenen etiket, bunu değiştirin. Fail: içe aktarma başarısız oldu.
ExistingJobStatus Yinelenen etiket için mevcut işin durumu. Yalnızca Status değeri Label Already Exists olduğunda mevcuttur. Değerler: RUNNING veya FINISHED.
Message Varsa hata iletisi.
NumberTotalRows İşlenen toplam satır sayısı.
NumberLoadedRows Başarıyla içe aktarılan satır sayısı.
NumberFilteredRows Veri kalitesi sorunları nedeniyle filtrelenen satır sayısı.
NumberUnselectedRows where koşulu tarafından hariç tutulan satır sayısı.
LoadBytes İçe aktarılan bayt sayısı.
LoadTimeMs Toplam içe aktarma süresi (milisaniye cinsinden).
BeginTxnTimeMs Frontend'de (FE) işlemi başlatma süresi (milisaniye cinsinden).
StreamLoadPutTimeMs FE'den yürütme planını alma süresi (milisaniye cinsinden).
ReadDataTimeMs Kaynak verileri okuma süresi (milisaniye cinsinden).
WriteDataTimeMs Veri yazma süresi (milisaniye cinsinden).
CommitAndPublishTimeMs İşlemi onaylama ve yayınlama süresi (milisaniye cinsinden).
ErrorURL Veri kalitesi sorunları varsa, belirli hata satırlarını görüntülemek için bu URL'ye erişebilirsiniz.

İçe aktarma hatalarını inceleme

Veri kalitesi sorunları varsa, reddedilen satırları indirmek için ErrorURL adresini kullanın:

curl "<ErrorURL>"
# or save to a file:
wget "<ErrorURL>" -O error_rows.txt

İçe aktarma görevlerini iptal etme ve görüntüleme

Stream Load görevleri gönderildikten sonra manuel olarak iptal edilemez. Sistem, bir görev zaman aşımını aştığında veya kurtarılamaz bir hatayla karşılaştığında görevi otomatik olarak iptal eder.

Tamamlanan Stream Load görevlerini görüntülemek için önce Stream Load işlem kayıtlarını etkinleştirin, ardından bir MySQL istemcisi kullanarak örneğe bağlanın ve şu komutu çalıştırın:

SHOW STREAM LOAD;

CSV verilerini içe aktarma

Örnek: Komut dosyası kullanarak içe aktarma

Hedef tabloyu ayarlama

  1. DMS kullanarak SelectDB örneğine bağlanın.

  2. Veritabanını ve tabloyu oluşturun:

    CREATE DATABASE test_db;
    
    CREATE TABLE test_table
    (
        id int,
        name varchar(50),
        age int,
        address varchar(50),
        url varchar(500)
    )
    UNIQUE KEY(`id`, `name`)
    DISTRIBUTED BY HASH(id) BUCKETS 16
    PROPERTIES("replication_num" = "1");
  3. Stream Load'u çalıştıracağınız makinede test.csv adlı bir dosya oluşturun:

    1,yang,32,shanghai,http://example.com
    2,wang,22,beijing,http://example.com
    3,xiao,23,shenzhen,http://example.com
    4,jess,45,hangzhou,http://example.com
    5,jack,14,shanghai,http://example.com
    6,tomy,25,hangzhou,http://example.com
    7,lucy,45,shanghai,http://example.com
    8,tengyin,26,shanghai,http://example.com
    9,wangli,27,shenzhen,http://example.com
    10,xiaohua,37,shanghai,http://example.com

Etiketle yinelemeyi önleme ve özel zaman aşımı ayarlama

Yinelenen içe aktarmaları önlemek için bir etiketle ve 100 saniyelik özel bir zaman aşımıyla test.csv dosyasını içe aktarın:

curl --location-trusted \
  -u admin:admin_123 \
  -H "label:123" \
  -H "timeout:100" \
  -H "expect:100-continue" \
  -H "column_separator:," \
  -T test.csv \
  http://selectdb-cn-h033cjs****-fe.selectdbfe.pre.rds.aliyuncs.com:8080/api/test_db/test_table/_stream_load

Sütun değerine göre satırları filtreleme

Alan sırasını belirtmek için sütun eşlemesini kullanarak yalnızca address değeri hangzhou olan satırları içe aktarın:

curl --location-trusted \
  -u admin:admin_123 \
  -H "label:123" \
  -H "columns: id,name,age,address,url" \
  -H "where: address='hangzhou'" \
  -H "expect:100-continue" \
  -H "column_separator:," \
  -T test.csv \
  http://selectdb-cn-h033cjs****-fe.selectdbfe.pre.rds.aliyuncs.com:8080/api/test_db/test_table/_stream_load

%20 hata toleransına izin verme

Veri kalitesi kontrollerini geçemeyen satırların en fazla %20'sine izin vererek içe aktarın:

curl --location-trusted \
  -u admin:admin_123 \
  -H "label:123" \
  -H "max_filter_ratio:0.2" \
  -H "expect:100-continue" \
  -T test.csv \
  http://selectdb-cn-h033cjs****-fe.selectdbfe.pre.rds.aliyuncs.com:8080/api/test_db/test_table/_stream_load

Özel saat dilimiyle sıkı modu etkinleştirme

Sıkı tür denetimi uygulayın ve saat dilimini Africa/Abidjan olarak ayarlayın:

curl --location-trusted \
  -u admin:admin_123 \
  -H "strict_mode: true" \
  -H "timezone: Africa/Abidjan" \
  -H "expect:100-continue" \
  -T test.csv \
  http://selectdb-cn-h033cjs****-fe.selectdbfe.pre.rds.aliyuncs.com:8080/api/test_db/test_table/_stream_load

SelectDB'de eşleşen satırları silme

test.csv dosyasındaki satırlarla eşleşen test_table tablosundaki tüm satırları silin:

curl --location-trusted \
  -u admin:admin_123 \
  -H "merge_type: DELETE" \
  -H "expect:100-continue" \
  -T test.csv \
  http://selectdb-cn-h033cjs****-fe.selectdbfe.pre.rds.aliyuncs.com:8080/api/test_db/test_table/_stream_load

Koşula göre satırları silme, geri kalanını içe aktarma

address değeri hangzhou olan satırları silin ve kalan satırları içe aktarın:

curl --location-trusted \
  -u admin:admin_123 \
  -H "expect:100-continue" \
  -H "columns: id,name,age,address,url" \
  -H "merge_type: MERGE" \
  -H "delete: address='hangzhou'" \
  -H "column_separator:," \
  -T test.csv \
  http://selectdb-cn-h033cjs****-fe.selectdbfe.pre.rds.aliyuncs.com:8080/api/testDb/testTbl/_stream_load

Örnek: Java kodu kullanarak içe aktarma

Aşağıdaki örnek, Apache HttpClient kullanan eksiksiz bir Java uygulamasını gösterir. Başarıyı belirlemek için HTTP durum kodunu değil, yanıt gövdesindeki Status alanını kontrol edin.

package com.selectdb.x2doris.connector.doris.writer;

import com.alibaba.fastjson2.JSON;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.BufferedHttpEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultRedirectStrategy;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.protocol.RequestContent;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Base64;
import java.util.List;
import java.util.Map;

public class DorisLoadCase {
    public static void main(String[] args) throws Exception {

        // 1. Configure parameters.
        String loadUrl = "http://<Host:Port>/api/<DB>/<TABLE>/_stream_load?";
        String userName = "admin";
        String password = "****";

        // 2. Build the HTTP client. Redirection (isRedirectable) must be enabled.
        HttpClientBuilder httpClientBuilder = HttpClients.custom().setRedirectStrategy(new DefaultRedirectStrategy() {
            @Override
            protected boolean isRedirectable(String method) {
                return true;
            }
        });
        httpClientBuilder.addInterceptorLast(new RequestContent(true));
        HttpClient httpClient = httpClientBuilder.build();

        // 3. Build the PUT request.
        HttpPut httpPut = new HttpPut(loadUrl);

        // Set authentication and content headers.
        String basicAuth = Base64.getEncoder().encodeToString(
            String.format("%s:%s", userName, password).getBytes(StandardCharsets.UTF_8));
        httpPut.addHeader(HttpHeaders.AUTHORIZATION, "Basic " + basicAuth);
        httpPut.addHeader(HttpHeaders.EXPECT, "100-continue");
        httpPut.addHeader(HttpHeaders.CONTENT_TYPE, "text/plain; charset=UTF-8");

        RequestConfig reqConfig = RequestConfig.custom().setConnectTimeout(30000).build();
        httpPut.setConfig(reqConfig);

        // 4. Read the CSV file and attach it as the request body.
        // Default CSV delimiters: row = \n, column = \t
        List<String> lines = Files.readAllLines(Paths.get("your_file.csv"));
        String data = String.join("\n", lines);
        httpPut.setEntity(new StringEntity(data));

        // 5. Send the request and check the result.
        HttpResponse httpResponse = httpClient.execute(httpPut);
        int httpStatus = httpResponse.getStatusLine().getStatusCode();
        String respContent = EntityUtils.toString(
            new BufferedHttpEntity(httpResponse.getEntity()), StandardCharsets.UTF_8);
        String respMsg = httpResponse.getStatusLine().getReasonPhrase();

        if (httpStatus == HttpStatus.SC_OK) {
            // HTTP 200 does not guarantee import success.
            // Always check the Status field returned by SelectDB.
            Map<String, String> respAsMap = JSON.parseObject(respContent, Map.class);
            String dorisStatus = respAsMap.get("Status");
            List<String> DORIS_SUCCESS_STATUS = Arrays.asList("Success", "Publish Timeout", "200");
            if (!DORIS_SUCCESS_STATUS.contains(dorisStatus) || !respMsg.equals("OK")) {
                throw new RuntimeException(
                    "StreamLoad failed, status: " + dorisStatus + ", Response: " + respMsg);
            } else {
                System.out.println("Import successful.");
            }
        } else {
            throw new IOException(
                "StreamLoad HTTP error: " + httpStatus + ", url: " + loadUrl + ", error: " + respMsg);
        }
    }
}

JSON verilerini içe aktarma

Önemli

Dizi olmayan JSON biçimi, dizi biçimine kıyasla önemli ölçüde daha yüksek performans sağlar. Mümkün olduğunda satır ayrılmış JSON kullanın (read_json_by_line:true).

Hedef tabloyu ayarlama

  1. DMS kullanarak SelectDB örneğine bağlanın.

  2. Veritabanını ve tabloyu oluşturun:

    CREATE DATABASE test_db;
    
    CREATE TABLE test_table
    (
        id int,
        name varchar(50),
        age int
    )
    UNIQUE KEY(`id`)
    DISTRIBUTED BY HASH(`id`) BUCKETS 16
    PROPERTIES("replication_num" = "1");

Satır ayrılmış JSON'u içe aktarma (önerilen)

Satır başına bir JSON nesnesi içeren json.data adlı bir dosya oluşturun:

{"id":1,"name":"Emily","age":25}
{"id":2,"name":"Benjamin","age":35}
{"id":3,"name":"Olivia","age":28}
{"id":4,"name":"Alexander","age":60}
{"id":5,"name":"Ava","age":17}

read_json_by_line:true kullanarak dosyayı içe aktarın:

curl --location-trusted \
  -u admin:admin_123 \
  -H "Expect:100-continue" \
  -H "format:json" \
  -H "read_json_by_line:true" \
  -T json.data \
  -XPUT http://selectdb-cn-h033cjs****-fe.selectdbfe.pre.rds.aliyuncs.com:8080/api/test_db/test_table/_stream_load

JSON dizisini içe aktarma

JSON dizi biçiminde json_array.data adlı bir dosya oluşturun:

[
  {"userid":1,"username":"Emily","userage":25},
  {"userid":2,"username":"Benjamin","userage":35},
  {"userid":3,"username":"Olivia","userage":28},
  {"userid":4,"username":"Alexander","userage":60},
  {"userid":5,"username":"Ava","userage":17}
]

Eşleşmeyen alan adlarını eşlemek için strip_outer_array:true ve jsonpaths kullanarak dosyayı içe aktarın:

curl --location-trusted \
  -u admin:admin_123 \
  -H "Expect:100-continue" \
  -H "format:json" \
  -H "jsonpaths:[\"$.userid\", \"$.userage\", \"$.username\"]" \
  -H "columns:id,age,name" \
  -H "strip_outer_array:true" \
  -T json_array.data \
  -XPUT http://selectdb-cn-h033cjs****-fe.selectdbfe.pre.rds.aliyuncs.com:8080/api/test_db/test_table/_stream_load

HTTP Stream modu

HTTP Stream modu (http_stream), Table Value Function (TVF) özelliğini kullanarak içe aktarma parametrelerini istek üstbilgisinde bir SQL ifadesi olarak belirtmenize olanak tanır. API uç noktası standart Stream Load'dan farklıdır:

  • Standart Stream Load: http://host:http_port/api/{db}/{table}/_stream_load

  • HTTP Stream modu: http://host:http_port/api/_http_stream

Söz dizimi

curl --location-trusted \
  -u <username>:<password> \
  -H "sql: ${load_sql}" \
  -T <file_name> \
  -XPUT http://host:http_port/api/_http_stream

load_sql üstbilgisi, column_separator, line_delimiter, where ve columns gibi bağımsız üstbilgilerin yerine tek bir SQL ifadesini kullanır:

INSERT INTO db.table (col, ...) SELECT stream_col, ... FROM http_stream("property1"="value1");

Örnek

curl --location-trusted \
  -u admin:admin_123 \
  -T test.csv \
  -H "sql:insert into demo.example_tbl_1(user_id, age, cost) select c1, c4, c7 * 2 from http_stream(\"format\" = \"CSV\", \"column_separator\" = \",\" ) where age >= 30" \
  http://host:http_port/api/_http_stream

TVF'ler hakkında daha fazla bilgi için bkz. TVF.Dosya Biçimleri

İsteğe bağlı yapılandırma

İsteğe bağlı: Stream Load kayıtlarını etkinleştirme

Varsayılan olarak, hesaplama kümesi Stream Load işlemlerini kaydetmez. Kaydı etkinleştirmek için:

  1. Arka uç parametresi enable_stream_load_record değerini true olarak ayarlayın.

  2. Hesaplama kümesini yeniden başlatın.

Bu özelliği etkinleştirmek için bir destek bileti göndermeniz gerekir.

İsteğe bağlı: Maksimum dosya boyutunu artırma

Tek bir Stream Load işi için varsayılan maksimum dosya boyutu 10.240 MB'dir. Bunu artırmak için arka uç parametresi streaming_load_max_mb değerini ayarlayın. Talimatlar için bkz. Parametreleri yapılandırma.

İsteğe bağlı: Varsayılan zaman aşımını ayarlama

Varsayılan zaman aşımı 600 saniyedir. İş başına timeout üstbilgisini kullanarak bunu geçersiz kılın. Global varsayılanı değiştirmek için frontend (FE) parametresi stream_load_default_timeout_second değerini ayarlayın ve örneği yeniden başlatın.

Global parametreleri değiştirmek için bir destek bileti göndermeniz gerekir.

SSS

"get table cloud commit lock timeout" hatasının nedeni nedir?

Bu hata, yazma işlemlerinin çok sık gerçekleştiğini ve bunun bir tablo kilidine neden olduğunu gösterir. Yazma sıklığını azaltın ve verilerinizi toplu işleyin. Tek bir Stream Load işi, istek başına birkaç yüz MB ile 1 GB arasında veri hedeflemelidir. Toplu işleme stratejileri için bkz. Kullanım notları.

Sütun veya satır ayırıcıları içeren CSV verilerini nasıl işlerim?

Yeni ayırıcılar belirtin ve verilerinizdeki ayırıcı karakterlerinin seçilen ayırıcılarla çakışmaması için veri dosyasını güncelleyin.

Veri satır ayırıcısını içeriyor

Verileriniz varsayılan satır ayırıcısı \n karakterini bir veri değeri olarak (satır sınırı olarak değil) içeriyorsa, farklı bir satır ayırıcısı belirtin.

Örnek — orijinal dosya:

Zhang San\n,25,Shaanxi
Li Si\n,30,Beijing

Adımlar:

  1. Yeni bir satır ayırıcısı ayarlayın: isteğinize -H "line_delimiter:\r\n" ekleyin.

  2. Her satırı yeni ayırıcıyla bitirecek şekilde dosyayı güncelleyin:

    Zhang San\n,25,Shaanxi\r\n
    Li Si\n,30,Beijing\r\n

Veri sütun ayırıcısını içeriyor

Verileriniz varsayılan sütun ayırıcısı \t (sekme) karakterini bir veri değeri olarak içeriyorsa, farklı bir sütun ayırıcısı belirtin.

Örnek — orijinal dosya:

Zhang San\t  25  Shaanxi
Li Si\t  30  Beijing

Adımlar:

  1. Yeni bir sütun ayırıcısı ayarlayın: isteğinize -H "column_separator:," ekleyin.

  2. Sütunları yeni ayırıcıyla ayıracak şekilde dosyayı güncelleyin:

    Zhang San\t,25,Shaanxi
    Li Si\t,30,Beijing

Sonraki adımlar