How do I restore just part of a corrupted file on a zfs pool?

zfs status -xv reports that a large (1TB) file has checksum errors. The docs say this can be fixed by “restoring the file” from a backup. I assume this just means cp /backup/path/file /pool/path/file. However this will take awhile since the file is so large, and I was wondering if there was some way to find exactly which offsets are corrupt so that I could simply use dd or similar to fix it very quickly.