ODBC guide

Copy a file or folder


Copies a file or folder to another location, either within the same drive or to another drive. You can give the copy a new name; placeholder functions (e.g. <<FUN_NOW>>) are supported for dynamic target names. If the target already exists, use ConflictBehavior to replace or rename.

SELECT *
FROM copy_item
WITH
(
    -- ##### SOURCE #####
    -- Source Drive
    , DriveId = 'me'
    -- OR use another user's / shared drive
    -- , 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 Drive (only required when copying across drives)
    -- , TargetDriveId = 'me'
    -- , TargetDriveId = 'b!0zqXLXXJh0uXXXXXXXXXXXXxxxxxxxxx'

    -- ##### TARGET FOLDER #####
    -- Choose ONE format: Path OR Id

    , TargetType       = 'Path'
     , TargetFolderPath = '/myfolder/subfolder'	
    -- , TargetFolderPath = '/myfolder/export_<<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 items or cross-drive copies (async)
    -- , Prefer = 'respond-async'
);