Kaynağa Gözat

改进与优化

erlArango_v1
AICells 5 yıl önce
ebeveyn
işleme
e4c5d524d6
1 değiştirilmiş dosya ile 148 ekleme ve 79 silme
  1. +148
    -79
      src/agApi/agBulkImportExport.erl

+ 148
- 79
src/agApi/agBulkImportExport.erl Dosyayı Görüntüle

@ -19,87 +19,158 @@
% complete具有除true以外的其他值
% details查询参数设置为true使API返回有关无法导入的文档的详细信息details为truedetails属性false或省略
%
% JSON编码的列表中导入文档
% POST /_api/import#document
%
%
% fromPrefix_from属性中值的可选前缀_from输入值之前_from
% toPrefix_to属性中值的可选前缀_to输入值之前_to
% true或yes
% waitForSync
% onDuplicate
%
% update使
% replace
% ignore
% collection
% fromPrefix_from属性中值的可选前缀_from输入值之前_from
% toPrefix_to属性中值的可选前缀_to输入值之前_to
% overwrite true或yes
% waitForSync
% onDuplicate
% error
% update使
% replace
% ignore
% _key属性时updatereplace和ignore才起作用
% true或yes使使
% detailstrue或yesdetails
%
% complete true或yes使使
% detailstrue或yesdetails
%
%
% JSON编码的属性值数组组成JSON编码的属性名称数组
% collection-nameJSON编码的属性名称数组JSON编码的属性值数组
%
% JSON对象
% created
% errors
% emptydocuments或只能包含大于零的值auto
% updated/onDuplicate update或replace
% ignored onDuplicate设置为ignore
% detailsdetails设置为truedetails属性
% created
% errors
% emptydocuments或只能包含大于零的值auto
% updated/onDuplicate update或replace
% ignored onDuplicate设置为ignore
% detailsdetails设置为truedetails属性
%
%
% 201
% 400type包含无效值collection指定no
% 404collection或导入边的_from或_to属性引用未知集合
% 409complete则返回 true
% 500500
importFormDocument(PoolNameOrSocket, ListOfList, QueryPars) ->
% 201
% 400type包含无效值collection指定no
% 404collection或导入边的_from或_to属性引用未知集合
% 409complete则返回 true
% 500500
docImport(PoolNameOrSocket, ListOfList, QueryPars) ->
QueryBinary = agMiscUtils:spellQueryPars(QueryPars),
Path = <<"/_api/import", QueryBinary/binary>>,
BodyStr = jiffy:encode(ListOfList),
BodyStr = <<<<(jiffy:encode(OneList))/binary, "\n">> || OneList <- ListOfList>>,
agHttpCli:callAgency(PoolNameOrSocket, ?AgPost, Path, [], BodyStr).
% JSON
% JSON导入文档
% POST /_api/import#json
%
% type可以具有以下值
% documents使JSON编码的文档JSON对象需要用换行符分隔
% list使JSON编码数组
% auto documents或list
%
% fromPrefix_from属性中值的可选前缀_from输入值之前_from
% toPrefix_to属性中值的可选前缀_to输入值之前_to
% true或yes
% waitForSync
%
% update使
% replace
% ignore
% _key属性时updatereplace和ignore才起作用
% true或yes使使
% detailstrue或yesdetails
% type type可以具有以下值
% documents使JSON编码的文档JSON对象需要用换行符分隔
% list使JSON编码数组
% auto documents或list
% collection
% fromPrefix_from属性中值的可选前缀_from输入值之前_from
% toPrefix_to属性中值的可选前缀_to输入值之前_to
% overwrite true或yes
% waitForSync
% onDuplicate
% error
% update使
% replace
% ignore
% _key属性时updatereplace和ignore才起作用
% complete true或yes使使
% detailstrue或yesdetails
%
% JSON编码的对象数组JSON对象的字符串
% collection-nameJSON表示形式必须作为POST请求的主体传递JSON对象JSON数组
%
% JSON对象
% created
% errors
% emptydocuments或只能包含大于零的值auto
% updated/onDuplicate update或replace
% ignored onDuplicate设置为ignore
% detailsdetails设置为truedetails属性
% created
% errors
% emptydocuments或只能包含大于零的值auto
% updated/onDuplicate update或replace
% ignored onDuplicate设置为ignore
% detailsdetails设置为truedetails属性
%
% 201
% 400type包含无效值collection指定no
% 404collection或导入边的_from或_to属性引用未知集合
% 409complete则返回 true
% 500500
importFormJson(PoolNameOrSocket, MapDataList, QueryPars) ->
% 201
% 400type包含无效值collection指定no
% 404collection或导入边的_from或_to属性引用未知集合
% 409complete则返回 true
% 500500
jsonImport(PoolNameOrSocket, MapDataList, QueryPars) ->
case lists:keyfind(type, 1, QueryPars) of
{type, list} ->
BodyStr = jiffy:encode(MapDataList);
{type, documents} ->
BodyStr = <<<<(jiffy:encode(OneList))/binary, "\n">> || OneList <- MapDataList>>;
_ ->
BodyStr = MapDataList
end,
QueryBinary = agMiscUtils:spellQueryPars(QueryPars),
Path = <<"/_api/import", QueryBinary/binary>>,
BodyStr = jiffy:encode(MapDataList),
agHttpCli:callAgency(PoolNameOrSocket, ?AgPost, Path, [], BodyStr).
% ------->
% JSON文档
% JSON文档HTTP POST请求的正文中使
%
% { _key key1} { _key key2}
%
% 使documents
%
% JSON数组中的自包含JSON文档
%
%
%
% [
% { "_key": "key1", ... },
% { "_key": "key2", ... },
% ...
% ]
% JSON数据中允许使用任何空格JSON格式的结果数组arangosh中ArangoDB中使ArangoDB解析整个数组
%
% 使array
%
% auto将使服务器自动检测数据是按行的JSON文档=JSON数组=
%
%
%
% curl --data-binary @- -X POST --dump - "http://localhost:8529/_api/import?type=documents&collection=test"
% { "name" : "test", "gender" : "male", "age" : 39 }
% { "type" : "bird", "name" : "robin" }
%
% HTTP/1.1 201 Created
% Server: ArangoDB
% Connection: Keep-Alive
% Content-type: application/json; charset=utf-8
%
% {"error":false,"created":2,"empty":0,"errors":0}
% HTTP 201errors属性中返回该文档0
%
% details参数设置为truedetails
%
% 使HTTP POST请求正文的第一行必须是JSON数组JSON数组
%
% curl --data-binary @- -X POST --dump - "http://localhost:8529/_api/import?collection=test"
% [ "firstName", "lastName", "age", "gender" ]
% [ "Joe", "Public", 42, "male" ]
% [ "Jane", "Doe", 31, "female" ]
%
% HTTP/1.1 201 Created
% Server: ArangoDB
% Connection: Keep-Alive
% Content-type: application/json; charset=utf-8
%
% {"error":false,"created":2,"empty":0,"errors":0}
% HTTP 201errors属性中返回该文档empty属性中返回
%
% details参数设置为truedetails
%
%
% _from和_to属性
% HTTP接口
% HTTP请求中向ArangoDB发送单独的操作
% ArangoDB提供了一个批处理请求API使API批量向ArangoDB发送多个操作/HTTP请求并且各个请求的结果彼此不依赖时
@ -114,30 +185,29 @@ importFormJson(PoolNameOrSocket, MapDataList, QueryPars) ->
% HTTP接口
% *******************************************************************
% HTTP接口
%
% 使
% POST /_api/export
%
%
% collection
% JSON对象是必需的
% flushtrueWAL刷新操作WAL复制到集合的数据文件中flushWait秒的额外等待时间使WAL收集器也可以更改调整后的文档元数据以指向数据文件false
% flushWait10flush设置为true时
% count count count count
% batchSize使
% limitlimit属性或将其设置为0将导致不使用任何限制使
% ttl使
%
% 使
%
% API相比API生成的内部数据结构更轻便
% /_api/cursorREST API中相似的方式返回文档hasMore属性将设置为 falsehasMore属性将设置为trueid属性将包含游标id
% flushtrueWAL刷新操作WAL复制到集合的数据文件中flushWait秒的额外等待时间使WAL收集器也可以更改调整后的文档元数据以指向数据文件false
% flushWait10flush设置为true时
% count count count count
% batchSize使
% limitlimit属性或将其设置为0将导致不使用任何限制使
% ttl使
% restrict
% type使 include or exclude
% fields
% API相比API生成的内部数据结构更轻便
% /_api/cursorREST API中相似的方式返回文档hasMore属性将设置为 falsehasMore属性将设置为trueid属性将包含游标id
% 退
%
% WAL
% API或设置flush属性之前发出WAL刷新请求 WAL冲洗便WAL复制到集合数据文件
% 使HTTP 201 JSON对象
% JSON对象具有以下属性
% false
% error false
% codeHTTP状态码
% result
% hasMore
@ -152,13 +222,12 @@ importFormJson(PoolNameOrSocket, MapDataList, QueryPars) ->
% 使ttl值来调整此空闲时间
% API
%
% 201
% 400JSON表示格式错误或请求中缺少查询规范
% 404访HTTP 404
% 405使HTTP方法HTTP 405
% 501API使HTTP 501
% CousurId newAqlCursor
exportDocuments(PoolNameOrSocket, CollName, MapData) ->
% 201
% 400JSON表示格式错误或请求中缺少查询规范
% 404访HTTP 404
% 405使HTTP方法HTTP 405
% 501API使HTTP 501
docExport(PoolNameOrSocket, CollName, MapData) ->
Path = <<"/_api/export?collection=", CollName/binary>>,
BodyStr = jiffy:encode(MapData),
agHttpCli:callAgency(PoolNameOrSocket, ?AgPost, Path, [], BodyStr).

Yükleniyor…
İptal
Kaydet