# coding=utf-8 # 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. import requests from requests.auth import HTTPBasicAuth import base64 # This script is a python demo for doris stream load # # How to use: # 1. create a table in doris with any mysql client # CREATE TABLE `db0`.`t_user` ( # `id` int, # `name` string # ) # DUPLICATE KEY(`id`) # DISTRIBUTED BY HASH(`id`) BUCKETS 1 # PROPERTIES ( # "replication_num" = "1" # ); # # 2. change the Doris cluster, db, user config in this class # # 3. run this script, you should see the following output: # # 200 OK # { # "TxnId": 14017, # "Label": "2486da70-94bb-47cc-a810-70791add2b8c", # "TwoPhaseCommit": "false", # "Status": "Success", # "Message": "OK", # "NumberTotalRows": 2, # "NumberLoadedRows": 2, # "NumberFilteredRows": 0, # "NumberUnselectedRows": 0, # "LoadBytes": 13, # "LoadTimeMs": 54, # "BeginTxnTimeMs": 1, # "StreamLoadPutTimeMs": 12, # "ReadDataTimeMs": 0, # "WriteDataTimeMs": 11, # "CommitAndPublishTimeMs": 28 # } if __name__ == '__main__': database, table = 'db0', 't_user' username, password = 'root', '' url = 'http://127.0.0.1:8030/api/%s/%s/_stream_load' % (database, table) headers = { 'Content-Type': 'text/plain; charset=UTF-8', # 'label': 'your_custom_label', 'format': 'csv', "column_separator": ',', 'Expect': '100-continue', # 'Authorization': 'Basic ' + base64.b64encode((username + ':' + password).encode('utf-8')).decode('ascii') } auth = HTTPBasicAuth(username, password) session = requests.sessions.Session() session.should_strip_auth = lambda old_url, new_url: False # Don't strip auth data='1,Tom\n2,Jelly' resp = session.request( 'PUT', url=url, data=data, # open('/path/to/your/data.csv', 'rb'), headers=headers, auth=auth ) print(resp.status_code, resp.reason) print(resp.text)