
Cloudflare R2 Import
CertifiedImport a SQL file into a Cloudflare D1 database
Cloudflare R2 Import
Import a SQL file into a Cloudflare D1 database
Uploads SQL into an existing D1 database using Cloudflare's 3-step import protocol: init (get a presigned R2 upload URL), PUT the SQL bytes to that URL, then ingest. If ingest does not return "complete" immediately, polls with exponential backoff (starting at 500ms, capped at 5s) until the import finishes or the deadline is reached.
type: io.kestra.plugin.cloudflare.d1.ImportExamples
Import an exported SQL dump back into a D1 database
id: import_d1_database
namespace: company.team
tasks:
- id: export
type: io.kestra.plugin.cloudflare.d1.Export
apiToken: "{{ secret('CLOUDFLARE_API_TOKEN') }}"
accountId: "your_account_id"
databaseId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
- id: import
type: io.kestra.plugin.cloudflare.d1.Import
apiToken: "{{ secret('CLOUDFLARE_API_TOKEN') }}"
accountId: "your_account_id"
databaseId: "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
from: "{{ outputs.export.uri }}"
Import inline SQL into a D1 database
id: import_inline_sql
namespace: company.team
tasks:
- id: import
type: io.kestra.plugin.cloudflare.d1.Import
apiToken: "{{ secret('CLOUDFLARE_API_TOKEN') }}"
accountId: "your_account_id"
databaseId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
sql: |
CREATE TABLE IF NOT EXISTS events (id INTEGER PRIMARY KEY, name TEXT);
INSERT INTO events (name) VALUES ('deploy');
Properties
accountId *Requiredstring
Account ID
Cloudflare account identifier
apiToken *Requiredstring
Cloudflare API token
Your Cloudflare API token. Create one in the Cloudflare dashboard with DNS read/write permissions.
databaseId *Requiredstring
Database ID
UUID of the D1 database to import into
baseUrl string
https://api.cloudflare.com/client/v4Cloudflare API base URL
Base URL for Cloudflare API. Usually you don’t need to change this.
from string
Source storage URI
Kestra internal storage URI of a SQL file to import (e.g. the uri output of an Export task). Mutually exclusive with sql.
maxDuration string
PT5MMaximum duration
Total time budget for the import to complete (ISO-8601 duration, e.g. PT5M). Polls use exponential backoff: 500ms initial delay, doubling each attempt, capped at 5s. Raise this for large imports.
options Non-dynamic
HTTP client options
Optional advanced HTTP settings like timeouts or proxy.
io.kestra.core.http.client.configurations.HttpConfiguration
falseIf true, allow a failed response code (response code >= 400)
List of response code allowed for this request
The authentication to use.
io.kestra.core.http.client.configurations.BasicAuthConfiguration
The password for HTTP basic authentication.
The username for HTTP basic authentication.
io.kestra.core.http.client.configurations.BearerAuthConfiguration
The token for bearer token authentication.
io.kestra.core.http.client.configurations.DigestAuthConfiguration
The password for HTTP Digest authentication.
The username for HTTP Digest authentication.
The password for HTTP basic authentication. Deprecated, use auth property with a BasicAuthConfiguration instance instead.
The username for HTTP basic authentication. Deprecated, use auth property with a BasicAuthConfiguration instance instead.
durationThe time allowed to establish a connection to the server before failing.
durationThe time an idle connection can remain in the client's connection pool before being closed.
UTF-8The default charset for the request.
java.nio.charset.Charset
trueWhether to enable TCP Keep-Alive extended socket options (TCP_KEEPIDLE, TCP_KEEPINTERVAL, TCP_KEEPCOUNT).
Set to false when running on Windows workers, as these extended socket options are not supported by the Windows JDK and will cause connection failures.
trueWhether redirects should be followed automatically.
ALLTRACEDEBUGINFOWARNERROROFFNOT_SPECIFIEDThe log level for the HTTP client.
REQUEST_HEADERSREQUEST_BODYRESPONSE_HEADERSRESPONSE_BODYThe enabled log.
The maximum content length of the response.
The proxy configuration.
io.kestra.core.http.client.configurations.ProxyConfiguration
The address of the proxy server.
The password for proxy authentication.
The port of the proxy server.
DIRECTDIRECTHTTPSOCKSThe type of proxy to use.
The username for proxy authentication.
The address of the proxy server.
The password for proxy authentication.
The port of the proxy server.
DIRECTHTTPSOCKSThe type of proxy to use.
The username for proxy authentication.
durationThe time allowed for a read connection to remain idle before closing it.
durationThe maximum time allowed for reading data from the server before failing.
The SSL request options
io.kestra.core.http.client.configurations.SslOptions
Whether to disable checking of the remote SSL certificate.
Only applies if no trust store is configured. Note: This makes the SSL connection insecure and should only be used for testing. If you are using a self-signed certificate, set up a trust store instead.
The timeout configuration.
io.kestra.core.http.client.configurations.TimeoutConfiguration
The time allowed to establish a connection to the server before failing.
PT5MThe time allowed for a read connection to remain idle before closing it.
pluginDefaultsRef Non-dynamicstring
Reference (ref) of the pluginDefaults to apply to this task.
sql string
Inline SQL
SQL statements to import. Mutually exclusive with from.
Outputs
etag string
Etag
MD5 hex digest of the uploaded SQL, as sent to Cloudflare
filename string
Filename
Filename assigned by Cloudflare for this import (derived from database ID and etag)
finalBookmark string
Final bookmark
D1 replication bookmark after the import completed
meta
Query metadata
Execution metadata for the import (duration, rows written, etc.)
io.kestra.plugin.cloudflare.d1.Query-QueryMeta
numQueries integer
Number of queries
Number of SQL statements executed during the import