1const Apify = require('apify');
2
3Apify.main(async () => {
4 const {eventData, datasetIdOrName, sourceDatasetId, pageSize = 100 } = await Apify.getInput();
5
6 if (!eventData?.actorRunId && !sourceDatasetId) {
7 throw new Error('Missing source dataset id or actor run id in event data');
8 }
9
10 const client = Apify.newClient();
11
12
13 const targetDataset = await Apify.openDataset(datasetIdOrName);
14
15
16 const sourceDatasetClient = sourceDatasetId
17 ? client.dataset(sourceDatasetId)
18 : client.run(eventData.actorRunId).dataset();
19
20 let currentOffset = 0;
21
22 while(true) {
23
24 const {items, total, offset} = await sourceDatasetClient.listItems({
25 clean: true,
26 limit: pageSize,
27 offset: currentOffset,
28 });
29
30
31 await targetDataset.pushData(items);
32
33 Apify.utils.log.info('Transfered items', {
34 count: items.length,
35 total,
36 offset
37 });
38
39
40 currentOffset += pageSize;
41
42
43 if (offset + items.length >= total) {
44 Apify.utils.log.info('All items were transfered');
45 break;
46 }
47 }
48
49});