id: insert_data.md related_key: insert

summary: Learn how to insert data in Milvus.

插入数据

当前主题介绍如何通过客户端向 Milvus 中插入数据。

你还可以使用 MilvusDM 将数据迁移到 Milvus,这是一款专门用于使用 Milvus 导入和导出数据而设计的开源工具。

以下示例插入 2000 行随机生成的数据作为示例数据(Milvus CLI 示例使用包含类似数据的预构建远程 CSV 文件)。实际应用程序可能会使用比示例更高维度的向量。你可以准备自己的数据来替换示例。

准备数据

首先,准备要插入的数据。插入数据的数据类型必须与 collection 的 schema 匹配,否则 Milvus 会抛出异常。

{{fragments/multiple_code.md}}

  1. import random
  2. data = [
  3. [i for i in range(2000)],
  4. [i for i in range(10000, 12000)],
  5. [[random.random() for _ in range(2)] for _ in range(2000)],
  6. ]
  1. const data = Array.from({ length: 2000 }, (v,k) => ({
  2. "book_id": k,
  3. "word_count": k+10000,
  4. "book_intro": Array.from({ length: 2 }, () => Math.random()),
  5. }));
  1. bookIDs := make([]int64, 0, 2000)
  2. wordCounts := make([]int64, 0, 2000)
  3. bookIntros := make([][]float32, 0, 2000)
  4. for i := 0; i < 2000; i++ {
  5. bookIDs = append(bookIDs, int64(i))
  6. wordCounts = append(wordCounts, int64(i+10000))
  7. v := make([]float32, 0, 2)
  8. for j := 0; j < 2; j++ {
  9. v = append(v, rand.Float32())
  10. }
  11. bookIntros = append(bookIntros, v)
  12. }
  13. idColumn := entity.NewColumnInt64("book_id", bookIDs)
  14. wordColumn := entity.NewColumnInt64("word_count", wordCounts)
  15. introColumn := entity.NewColumnFloatVector("book_intro", 2, bookIntros)
  1. Random ran = new Random();
  2. List<Long> book_id_array = new ArrayList<>();
  3. List<Long> word_count_array = new ArrayList<>();
  4. List<List<Float>> book_intro_array = new ArrayList<>();
  5. for (long i = 0L; i < 2000; ++i) {
  6. book_id_array.add(i);
  7. word_count_array.add(i + 10000);
  8. List<Float> vector = new ArrayList<>();
  9. for (int k = 0; k < 2; ++k) {
  10. vector.add(ran.nextFloat());
  11. }
  12. book_intro_array.add(vector);
  13. }
  1. # Prepare your data in a CSV file. Milvus CLI only supports importing data from local or remote files.

向 Milvus 插入数据

将数据插入到 collection 中。

通过指定 partition_name,可以选择将数据插入到指定的 partition 中。

{{fragments/multiple_code.md}}

  1. from pymilvus import Collection
  2. collection = Collection("book") # Get an existing collection.
  3. mr = collection.insert(data)
  1. const mr = await milvusClient.dataManager.insert({{
  2. collection_name: "book",
  3. fields_data: data,
  4. });
  1. _, err = milvusClient.Insert(
  2. context.Background(), // ctx
  3. "book", // CollectionName
  4. "", // partitionName
  5. idColumn, // columnarData
  6. wordColumn, // columnarData
  7. introColumn, // columnarData
  8. )
  9. if err != nil {
  10. log.Fatal("failed to insert data:", err.Error())
  11. }
  1. List<InsertParam.Field> fields = new ArrayList<>();
  2. fields.add(new InsertParam.Field("book_id", DataType.Int64, book_id_array));
  3. fields.add(new InsertParam.Field("word_count", DataType.Int64, word_count_array));
  4. fields.add(new InsertParam.Field("book_intro", DataType.FloatVector, book_intro_array));
  5. InsertParam insertParam = InsertParam.newBuilder()
  6. .withCollectionName("book")
  7. .withPartitionName("novel")
  8. .withFields(fields)
  9. .build();
  10. milvusClient.insert(insertParam);
  1. import -c book 'https://raw.githubusercontent.com/milvus-io/milvus_cli/main/examples/user_guide/search.csv'
参数 说明
data 准备插入 Milvus 的数据。
partition_name (optional) 要插入数据的 partition 名称。
参数 说明
collection_name 要插入数据的 collection 名称。
partition_name (optional) 要插入数据的 partition 名称。
fields_data 准备插入 Milvus 的数据。
参数 说明
ctx 控制 API 调用过程的 Context 。
CollectionName 要插入数据的 collection 名称。
partitionName 要插入数据的 partition 名称。如果为空,数据将插入默认的 partition。
columnarData 要插入每个 field 的数据。
参数 说明
fieldName 要插入数据的 field 名称。
DataType 要插入数据的 field 数据类型。
data 要插入每个 field 的数据。
CollectionName 要插入数据的 collection 名称。
PartitionName (optional) 要插入数据的 partition 名称。
选项 说明
-c 要插入数据的 collection 名称。
-p (Optional) 要插入数据的 partition 名称。

限制

属性 最大限制
向量维度 32,768

更多内容