ODBC guide

Copy a file or folder


Copies a file or folder to a different location (same drive or different drive). Supports dynamic naming using placeholder functions.

SELECT *
FROM copy_item
WITH
(
    -- ##### SOURCE #####
    -- Source Site (leave blank to use default)
    -- , SiteId = 'abc.sharepoint.com,5304daff-xxxxxxxxxx'

    , DriveId = 'b!0zqxxxxxxxxxxxxxxxxxxxxxxxx'

    -- Item to copy (choose ONE)
    -- Path format: root:/path/to/item:
    , ItemId  = 'root:/myfile.pdf:'
	-- , ItemId  = 'root:/myfolder/myfile.pdf:'
    -- , ItemId = '01R65QTTRARZ42C4BN6FF2WOH3AONX4GUW'  -- by ID (preferred)


    -- ##### TARGET #####
    -- Target Site (optional, only used to resolve TargetDriveId)
    -- , TargetSiteId = 'xyz.sharepoint.com,5304daff-xxxxxxxxxx'

    -- Target drive (only required when copying to a different drive)
    -- , TargetDriveId = 'b!0zqXLXXJh0uxxxxxxxxxxxxxxxxxxxxx'

    -- ##### TARGET FOLDER #####
    -- Choose ONE format: Path OR Id
    -- NOTE: Use ONLY ONE TargetType block

    , TargetType       = 'Path'
    , TargetFolderPath = '/somefolder'
	-- , TargetFolderPath = '/somefolder/subfolder'
    -- , TargetFolderPath = '/somefolder/<<yyyy-MM-dd,FUN_NOW>>'  -- folder must exist

    -- , TargetType     = 'Id'
    -- , TargetFolderId = '01R65QTTTBPH6V2AP36VD33CYYDXJSNHLN'
    -- , TargetFolderId = 'root'

    -- ##### OPTIONS #####
    -- New name for copied item (omit to keep source name)
    , TargetItemName = 'new_file_<<yyyy-MM-dd-HH-mm-ss-fff,FUN_NOW>>.pdf'

    -- What to do if target item already exists
    -- Ignored if TargetItemName is supplied
    -- , ConflictBehavior = 'replace'    -- fail | rename | replace

    -- Required for large files, folders, or cross-site/drive copy (async)
    -- , Prefer = 'respond-async'
)