Amazon web services 无法在非空表上创建索引
我目前正在AWS QLDB中使用AWS Lambda NodeJS 情况是这样的。 部署服务时,我有第一个表及其索引。因此将创建表和索引。我的问题是,一旦我需要添加新表及其索引;它无法创建索引,因为存在表 即使我的分类账中有一个现有的表,我也能创建新表的解决方法是查询我拥有的表列表Amazon web services 无法在非空表上创建索引,amazon-web-services,amazon-qldb,Amazon Web Services,Amazon Qldb,我目前正在AWS QLDB中使用AWS Lambda NodeJS 情况是这样的。 部署服务时,我有第一个表及其索引。因此将创建表和索引。我的问题是,一旦我需要添加新表及其索引;它无法创建索引,因为存在表 即使我的分类账中有一个现有的表,我也能创建新表的解决方法是查询我拥有的表列表 const getTables = async (transactionExecutor: TransactionExecutor) => { const statement = `SELECT name
const getTables = async (transactionExecutor: TransactionExecutor) => {
const statement = `SELECT name FROM information_schema.user_tables`;
return await transactionExecutor.execute(statement);
};
然后我有这个条件来检查表是否已经存在
const tables = JSON.stringify(result.getResultList());
if (
!JSON.parse(tables).some((object): boolean => object.name === process.env.TABLE_NAME)
) {
console.log('TABLE A NOT EXISTING');
await createTable(transactionExecutor, process.env.TABLE_NAME);
}
if (
!JSON.parse(tables).some(
(object): boolean => object.name === process.env.TABLE_NAME_1,
)
) {
console.log('TABLE B NOT EXISTING');
await createTable(transactionExecutor, process.env.TABLE_NAME_1);
}
我不知道如何使用索引,我尝试在QLDB中使用SQL命令,但它不起作用。
我希望你能帮助我
谢谢我不太确定你的问题是什么,文章标题和正文暗示了不同的东西,但我会尽力回答 首先,QLDB将数据存储在Ion中,而不是JSON中。因此,请使用Ion API来解析数据,而不是JSON API。您的代码之所以能够工作,是因为Ion是JSON的超集,并且结果集不包含JSON未知的类型。因此,例如,如果结果集被更改为包含离子时间戳,那么代码将中断 下一步,实际获取表列表已经完成。只需使用driver.getTableNames 第三,我想您有一个问题,我可以向非空表添加索引吗?。答案是否定的。这是计划的功能,我会在答案可用时更新它。更新:现在你可以了 最后,我想您也会问,是否有一种方法可以像在分类账中列出表一样列出表上的索引。答案是肯定的。在information_schema.user_表中返回的文档如下所示:
{
tableId:"...",
name:"THE_TABLE_NAME",
indexes:[
{
expr:"[THE_FIELD_BEING_INDEXED]"
}
],
status:"ACTIVE"
}
我不太确定你的问题是什么,文章标题和正文暗示了不同的东西,但我会尽我所能回答 首先,QLDB将数据存储在Ion中,而不是JSON中。因此,请使用Ion API来解析数据,而不是JSON API。您的代码之所以能够工作,是因为Ion是JSON的超集,并且结果集不包含JSON未知的类型。因此,例如,如果结果集被更改为包含离子时间戳,那么代码将中断 下一步,实际获取表列表已经完成。只需使用driver.getTableNames 第三,我想您有一个问题,我可以向非空表添加索引吗?。答案是否定的。这是计划的功能,我会在答案可用时更新它。更新:现在你可以了 最后,我想您也会问,是否有一种方法可以像在分类账中列出表一样列出表上的索引。答案是肯定的。在information_schema.user_表中返回的文档如下所示:
{
tableId:"...",
name:"THE_TABLE_NAME",
indexes:[
{
expr:"[THE_FIELD_BEING_INDEXED]"
}
],
status:"ACTIVE"
}
问题到底是什么?我不确定我是否理解。我无法为我的新表创建新索引,因为已有索引。问题到底是什么?我不确定我是否理解。我无法为我的新表创建新索引,因为已有索引。