CData SharePoint Drivers では、SQL のEXEC文やCALL文(ストアドプロシージャ呼び出し)を使って SharePoint のドキュメントライブラリに対するファイル操作を行えます。ダウンロード・アップロードといった基本操作から、フォルダ単位の移動・コピーまで、すべて SQL ベースで実行できるのが最大の特長です。本記事では V25で利用可能な 8 つのストアドプロシージャを、実際の HTTP リクエストと合わせてわかりやすく解説します。
本記事で使用する接続プロパティ
プロパティ | 値 |
|---|
スキーマ | REST |
URL | https://test.sharepoint.com/sites/MainTeamSite
|
ストアドプロシージャ一覧
本記事で紹介する 8 つのストアドプロシージャは以下の通りです。
プロシージャ名 | 機能 |
|---|
DownloadDocument
| ドキュメントをローカルにダウンロード |
UploadDocument
| ドキュメントをライブラリにアップロード |
CopyDocument
| ドキュメントを別パスにコピー |
DeleteDocument
| ドキュメントを削除(ごみ箱へ) |
RenameAttachmentOrDocument
| ドキュメントをリネーム |
CreateFolder
| フォルダを作成 |
CopyFolderJob
| フォルダをコピー(非同期ジョブ) |
MoveFolderJob
| フォルダを移動(非同期ジョブ) |
1. DownloadDocument — ファイルのダウンロード
概要
SharePoint ドキュメントライブラリからファイルをローカルに取得します。RemoteFile にはライブラリ内の相対パスのほか、完全な URL も指定可能です。
パラメータ
パラメータ | 型 | 必須 | 説明 |
|---|
File
| String | × | ローカル保存先パス(空の場合は FileData に base64 で返る) |
Library
| String | × | ドキュメントライブラリ名(例: Shared Documents) |
RemoteFile
| String | ◎ | ライブラリ内の相対パスまたは完全 URL |
Encoding
| String | × | BASE64(既定)または NONE
|
ReadTimeout
| String | × | タイムアウト秒数 |
クエリ例
EXEC DownloadDocument
@File = 'C:\\Work\\test.txt',
@Library = 'Shared Documents',
@RemoteFile = 'test.txt';
CALL 文での呼び出し:
CALL DownloadDocument(
'C:\\Work\\test.txt',
'Shared Documents',
'test.txt'
);
ポイント
2. UploadDocument — ファイルのアップロード
概要
ローカルファイルを指定した SharePoint フォルダにアップロードします。同名ファイルの上書きや、大容量ファイルのチャンクアップロードにも対応しています。
パラメータ
パラメータ | 型 | 必須 | 説明 |
|---|
RelativeUrl
| String | ◎ | アップロード先フォルダの相対パス |
InputFilePath
| String | × | ローカルファイルパス |
FileName
| String | ◎ | SharePoint 上のファイル名 |
Overwrite
| String | × | true で上書き
|
Content
| String | × | InputStream(InputFilePath 未指定時に使用) |
ChunkSize
| Int | × | チャンクサイズ(MB)。大容量ファイル向け |
クエリ例
EXEC UploadDocument
@InputFilePath = 'C:\\Work\\test.txt',
@RelativeUrl = '/sites/MainTeamSite/Shared Documents/',
@FileName = 'test.txt';
CALL 文での呼び出し:
CALL UploadDocument(
'/sites/MainTeamSite/Shared Documents/',
'C:\\Work\\test.txt',
'test.txt'
);
大容量ファイルのアップロード(チャンク送信)
EXEC UploadDocument
@RelativeUrl = 'Shared Documents/',
@InputFilePath = 'C:\\Work\\large_file.zip',
@FileName = 'large_file.zip',
@ChunkSize = '10';
SharePoint の推奨チャンクサイズは 10 MB です。チャンクを小さくしすぎると API のスロットリングが発生する場合があるため注意してください。なお、チャンクアップロードは SharePoint 2016/2019 Server および SharePoint Online でのみ利用可能です。
3. CopyDocument — ファイルのコピー
概要
ドキュメントライブラリ内でファイルを別の場所にコピーします。バックアップ作成やコンテンツ複製に活用できます。
パラメータ
パラメータ | 型 | 必須 | 説明 |
|---|
SourceFileRelativeUrl
| String | ◎ | コピー元のサーバー相対 URL |
DestFileRelativeUrl
| String | ◎ | コピー先のサーバー相対 URL |
クエリ例
EXEC CopyDocument
@SourceFileRelativeUrl = '/sites/MainTeamSite/Shared Documents/test.txt',
@DestFileRelativeUrl = '/sites/MainTeamSite/Shared Documents/test - copy.txt';
CALL 文での呼び出し:
CALL CopyDocument(
'/sites/MainTeamSite/Shared Documents/test.txt',
'/sites/MainTeamSite/Shared Documents/test - copy.txt'
4. DeleteDocument — ファイルの削除
概要
指定したファイルを SharePoint のごみ箱に移動します。完全削除ではなく recycle() エンドポイントを使用するため、削除後も一定期間は復元が可能です。
パラメータ
パラメータ | 型 | 必須 | 説明 |
|---|
RelativePath
| String | ◎ | 削除対象ファイルのサーバー相対 URL |
クエリ例
EXEC DeleteDocument
@RelativePath = '/sites/MainTeamSite/Shared Documents/test - copy.txt';
CALL 文での呼び出し:
CALL DeleteDocument(
'/sites/MainTeamSite/Shared Documents/test - copy.txt'
);
5. RenameAttachmentOrDocument — ファイルのリネーム
概要
ドキュメントまたは添付ファイルの名前を変更します。内部的にはファイルを同じフォルダ内の新しいパスに MoveToUsingPath で移動させることでリネームを実現しています。
パラメータ
パラメータ | 型 | 必須 | 説明 |
|---|
SourceFileURL
| String | ◎ | リネーム対象ファイルのサーバー相対 URL |
NewFileName
| String | ◎ | 変更後のファイル名 |
クエリ例
EXEC RenameAttachmentOrDocument
@SourceFileURL = '/sites/MainTeamSite/Shared Documents/test.txt',
@NewFileName = 'test - renamed.txt';
CALL 文での呼び出し:
CALL RenameAttachmentOrDocument(
'/sites/MainTeamSite/Shared Documents/test.txt',
'test - renamed.txt'
);
6. CreateFolder — フォルダの作成
概要
指定したドキュメントライブラリに新しいフォルダを作成します。階層構造を持つフォルダの整理に活用できます。
パラメータ
パラメータ | 型 | 必須 | 説明 |
|---|
RelativeUrl
| String | ◎ | 親フォルダのサーバー相対 URL |
FolderName
| String | ◎ | 新規フォルダ名 |
SiteURL
| String | × | 接続プロパティのデフォルト URL を上書きする場合に指定 |
クエリ例
EXEC CreateFolder
@RelativeUrl = '/Shared Documents',
@FolderName = 'TestFolder';
CALL 文での呼び出し:
CALL CreateFolder('/Shared Documents', 'TestFolder');
結果セット
カラム | 型 | 説明 |
|---|
Success
| Boolean | 操作成否 |
Id
| String | 新規フォルダの一意識別子 |
7. CopyFolderJob / MoveFolderJob — フォルダのコピー・移動
概要
SharePoint の CreateCopyJobs API を使用して、フォルダ単位でのコピーまたは移動を非同期ジョブとして実行します。大量ファイルを含むフォルダでも安定して処理できます。
WaitJobToFinish = true を指定すると、ドライバーがジョブの完了を待機してから結果を返します。
パラメータ(共通)
パラメータ | 型 | 必須 | 説明 |
|---|
SourceFolderUrl
| String | ◎ | 操作元フォルダの相対 URL |
DestinationFolderUrl
| String | ◎ | 操作先フォルダの相対 URL |
WaitJobToFinish
| Boolean | × | true でジョブ完了まで待機
|
CopyFolderJob — フォルダのコピー
EXEC CopyFolderJob
SourceFolderUrl = '/Shared Documents/TestFolder1',
DestinationFolderUrl = '/Shared Documents/TestFolder2',
WaitJobToFinish = true;
CALL 文での呼び出し:
CALL CopyFolderJob(
'/Shared Documents/TestFolder1',
'/Shared Documents/TestFolder2',
true
);
MoveFolderJob — フォルダの移動
EXEC MoveFolderJob
SourceFolderUrl = '/Shared Documents/TestFolder1',
DestinationFolderUrl = '/Shared Documents/TestFolder2',
WaitJobToFinish = true;
CALL 文での呼び出し:
CALL MoveFolderJob(
'/Shared Documents/TestFolder1',
'/Shared Documents/TestFolder2',
true
);
まとめ
CData JDBC Driver for Microsoft SharePoint の V25 では、ストアドプロシージャを通じてファイル・フォルダ操作を SQL だけで完結できます。SharePoint REST API の複雑な URL エンコーディングやリクエスト構造をドライバーが隠蔽してくれるため、アプリケーション側のコードを大幅にシンプルにできるのが魅力です。次のステップとして、JDBC や ODBC 経由で Python / Java などから本記事のプロシージャを呼び出す方法や、BI ツールとの連携についても合わせてご参照ください。