Google cloud platform 扳手-从表中删除一行或所有行

Google cloud platform 扳手-从表中删除一行或所有行,google-cloud-platform,google-cloud-spanner,Google Cloud Platform,Google Cloud Spanner,我想从扳手表中删除一行或所有行。表的主键是int64。我不想放下桌子重新创建它。我使用谷歌提供的Java教程作为指导(我不是一名Java程序员,自从产品首次问世以来,我一直是一名MS SQL Server开发人员)。这是我的代码。不会删除任何行,也不会引发错误 static void perfmonTestDelete(DatabaseClient dbClient) { LocalDateTime datetimeStart = LocalDateTime.now(); Loc

我想从扳手表中删除一行或所有行。表的主键是int64。我不想放下桌子重新创建它。我使用谷歌提供的Java教程作为指导(我不是一名Java程序员,自从产品首次问世以来,我一直是一名MS SQL Server开发人员)。这是我的代码。不会删除任何行,也不会引发错误

static void perfmonTestDelete(DatabaseClient dbClient) {
    LocalDateTime datetimeStart = LocalDateTime.now();
    LocalDateTime datetimeEnd;

    Mutation.delete("productPerfmon",KeySet.all());

    datetimeEnd = LocalDateTime.now();
    long diffInSeconds = java.time.Duration.between(datetimeStart, datetimeEnd).getSeconds();
        System.out.println("DurationInSeconds:" + diffInSeconds);

} 
下面是填充表中我要从中删除的10行的代码:

static void perfmonTest(DatabaseClient dbClient) {
    LocalDateTime datetimeStart = LocalDateTime.now();
    LocalDateTime datetimeEnd;
    List<Mutation> mutations = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        mutations.add(Mutation.newInsertBuilder("productPerfmon")
              .set("product_id")
              .to(i)
              .set("product_code")
              .to("test")
              .set("product_code_v")
              .to("test_v")
              .build());
    }
    dbClient.write(mutations);

    datetimeEnd = LocalDateTime.now();
    long diffInSeconds = java.time.Duration.between(datetimeStart, datetimeEnd).getSeconds();
        System.out.println("DurationInSeconds:" + diffInSeconds);

} 
static void perfmonTest(DatabaseClient dbClient){
LocalDateTime datetimeStart=LocalDateTime.now();
LocalDateTime日期时间结束;
列表变量=新的ArrayList();
对于(int i=0;i<10;i++){
添加(Mutation.newInsertBuilder(“productPerfmon”)
.set(“产品标识”)
.至(i)
.set(“产品代码”)
.至(“测试”)
.set(“产品代码”)
.至(“测试v”)
.build());
}
dbClient.write(突变);
datetimeEnd=LocalDateTime.now();
long diffInSeconds=java.time.Duration.between(datetimeStart,datetimeEnd.getSeconds();
System.out.println(“持续时间秒:+不同秒”);
} 

非常感谢您的帮助。

要删除一行或多行,您需要使用or选择器:

SpannerOptions options = SpannerOptions.newBuilder().build();
Spanner spanner = options.getService();
DatabaseClient dbClient = spanner.getDatabaseClient(DatabaseId.of(
        options.getProjectId(), "InstanceId", "databaseName"));

List<Mutation> mutations = new ArrayList<>();
// Single row by key
mutations.add(Mutation.delete("tableName", 
    KeySet.singleKey(Key.newBuilder().append("Key").build())));

// Multiple rows by range
mutations.add(Mutation.delete("tableName",
    KeySet.range(
        KeyRange.newBuilder()
            .setStart(Key.newBuilder().append("StartKeyIncl").build())
            .setEnd(Key.newBuilder().append("EndKeyNotIncl").build())
            .build())));
dbClient.write(mutations);
span操作选项=span操作.newBuilder().build();
扳手扳手=options.getService();
DatabaseClient dbClient=span.getDatabaseClient(DatabaseId.of(
options.getProjectId(),“InstanceId”,“databaseName”);
列表变量=新的ArrayList();
//按键单列
突变。添加(突变。删除(“表名”,
Key.singleKey(Key.newBuilder().append(“Key”).build());
//按范围多行
突变。添加(突变。删除(“表名”,
键集范围(
KeyRange.newBuilder()
.setStart(Key.newBuilder().append(“StartKeyIncl”).build())
.setEnd(Key.newBuilder().append(“EndKeyNotIncl”).build())
.build());
dbClient.write(突变);
要删除表中的所有行,可以执行以下操作:

List<Mutation> mutations = new ArrayList<>();
mutations.add(Mutation.delete("tableName", KeySet.all()));
dbClient.write(mutations);
List mutations=new ArrayList();
添加(Mutation.delete(“tableName”,KeySet.all());
dbClient.write(突变);

要删除一行或多行,需要使用or选择器:

SpannerOptions options = SpannerOptions.newBuilder().build();
Spanner spanner = options.getService();
DatabaseClient dbClient = spanner.getDatabaseClient(DatabaseId.of(
        options.getProjectId(), "InstanceId", "databaseName"));

List<Mutation> mutations = new ArrayList<>();
// Single row by key
mutations.add(Mutation.delete("tableName", 
    KeySet.singleKey(Key.newBuilder().append("Key").build())));

// Multiple rows by range
mutations.add(Mutation.delete("tableName",
    KeySet.range(
        KeyRange.newBuilder()
            .setStart(Key.newBuilder().append("StartKeyIncl").build())
            .setEnd(Key.newBuilder().append("EndKeyNotIncl").build())
            .build())));
dbClient.write(mutations);
span操作选项=span操作.newBuilder().build();
扳手扳手=options.getService();
DatabaseClient dbClient=span.getDatabaseClient(DatabaseId.of(
options.getProjectId(),“InstanceId”,“databaseName”);
列表变量=新的ArrayList();
//按键单列
突变。添加(突变。删除(“表名”,
Key.singleKey(Key.newBuilder().append(“Key”).build());
//按范围多行
突变。添加(突变。删除(“表名”,
键集范围(
KeyRange.newBuilder()
.setStart(Key.newBuilder().append(“StartKeyIncl”).build())
.setEnd(Key.newBuilder().append(“EndKeyNotIncl”).build())
.build());
dbClient.write(突变);
要删除表中的所有行,可以执行以下操作:

List<Mutation> mutations = new ArrayList<>();
mutations.add(Mutation.delete("tableName", KeySet.all()));
dbClient.write(mutations);
List mutations=new ArrayList();
添加(Mutation.delete(“tableName”,KeySet.all());
dbClient.write(突变);

文档说明Google Panner符合ANSI SQL-2011。但我并没有在Cloud扳手中找到任何删除、更新和插入的示例

我对SQL-2011的理解是,它肯定包括对删除、插入和更新的支持


在这种情况下,添加或删除行将成为单个SQL语句,Java客户机将使用JDBC进行连接

文档说明Google Panner符合ANSI SQL-2011。但我并没有在Cloud扳手中找到任何删除、更新和插入的示例

我对SQL-2011的理解是,它肯定包括对删除、插入和更新的支持


在这种情况下,添加或删除行将成为单个SQL语句,Java客户机将使用JDBC进行连接

Google Cloud Paner的文档说明JDBC驱动程序(当前)不支持DML和DDL:。如果您希望通过JDBC支持DML和DDL,您可以使用此驱动程序:(注意:我是驱动程序的作者,但不以任何方式隶属于Google)Google Cloud Panner的文档声明JDBC驱动程序(当前)不支持DML和DDL:。如果您希望通过JDBC支持DML和DDL,您可以使用这个驱动程序:(注意:我是驱动程序的作者,但不以任何方式隶属于Google)