25 rdb-example-12-clone-file.py 27 This example shows how to clone (copy) an existing database. 30 from typing
import Iterable, Optional
38 selection: Optional[str] =
None,
39 attributes: Optional[Iterable[str]] =
None,
40 chunk_size: int = 100*1000
43 with rdb_open(source, context=ctx)
as reader:
45 settings = CreateSettings(ctx)
46 settings.load(reader.transactions[1].settings)
49 with rdb_create(target, settings, context=ctx)
as writer:
50 with Transaction(writer,
"Clone",
"Duplicator 1.0")
as transaction:
52 for name, value
in reader.meta_data.items():
53 if name == RDB_RIEGL_POINT_ATTRIBUTE_GROUPS:
55 writer.meta_data[name] = value
58 attributes = set(attributes
or reader.point_attributes)
59 attributes.discard(RDB_RIEGL_ID)
60 for name
in attributes:
61 if name == settings.primary_attribute.name:
63 writer.point_attributes.add(reader.point_attributes[name])
66 buffer = PointBuffer(reader, attributes, chunk_size)
67 with reader.select(selection)
as select, writer.insert()
as insert:
70 while count := select.next(chunk_size):