我正在尝试编写一个插入查询以将文档插入 Cosmos DB。
除了使用“新建项目”选项和添加完整 json 之外,还有什么方法可以插入文档吗?
这是我的询问
insert into users (user_id, name, address) values ("XYZ", "ABC", null);
这里的user_id是分区键。 我遇到以下错误。
code":"BadRequest","message":"One of the input values is invalid
但是我重新检查了一下,所有输入值都是正确的。 有什么方法可以解决这个问题,或者有什么方法可以让我知道哪些值造成了这个问题?
正如 David 提到的,我们可以使用 API/SDK 插入数据。我使用 SDK 将数据插入到 Cosmos DB 容器中:
以下是我将数据插入 Cosmos DB 的步骤:
使用 端点 URL 和 主键初始化 Cosmos 客户端。
定义要插入到 Cosmos DB 容器中的数据。
将数据插入操作包装在
try-catch
块中以管理意外异常。
使用
CreateItemAsync
方法,我们将 dataToInsert
插入到 Cosmos DB 容器中。
检查响应的HTTP状态码,看看插入是否成功。
对于 Cosmos DB 相关问题,会捕获
CosmosException
,而其他意外错误则由标准 Exception catch
块处理。
我尝试过的代码:
var client = new CosmosClient(EndpointUrl, PrimaryKey);
var database = client.GetDatabase(DatabaseId);
var container = database.GetContainer(ContainerId);
var dataToInsert = new
{
id = Guid.NewGuid().ToString(), // Generate a unique document ID
name = "Balaji",
age = 24,
address = "Hyderabad"
};
try
{
var response = await container.CreateItemAsync(dataToInsert);
if (response.StatusCode == System.Net.HttpStatusCode.Created)
{
Console.WriteLine("Document inserted successfully.");
}
else
{
Console.WriteLine($"Failed to insert document. Status code: {response.StatusCode}");
}
}
catch (CosmosException ex)
{
Console.WriteLine($"Cosmos DB Exception: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
}
输出:
控制台输出:
Document inserted successfully.
Azure Cosmos DB 容器中的输出:
{
"id": "ff1c7da9-8293-4e8d-90f1-0731abc3ae22",
"name": "Balaji",
"age": 24,
"address": "Hyderabad",
"_rid": "wWUjALZCPGABAAAAAAAAAA==",
"_self": "dbs/wWUjAA==/colls/wWUjALZCPGA=/docs/wWUjALZCPGABAAAAAAAAAA==/",
"_etag": "\"a10505ba-0000-0700-0000-64f69f1c0000\"",
"_attachments": "attachments/",
"_ts": 1693884188
}