The SQLizer API is a REST interface which gives you programmatic access to our file conversion algorithm.
The processes of converting a file with the API follows four steps:
To use the API, you will need to sign up for an account to get an API key.
All requests made to the API need include a HTTP Authorization header with your API key so we can identify who you are. Once you are signed in, this key can be found on the account page. See the User Guide on Managing your SQLizer API Keys for more information.
You can set the Authentication Header using cURL like this:
curl https://sqlizer.io/api/files/ \
-H "Authorization: Bearer {API-KEY}"
A file conversion can be initiated with a POST request to https://sqlizer.io/api/files/
and
later accessed and updated at the endpoint https://sqlizer.io/api/files/{ID}/
.
Below are some sample POST requests to initiate the different types of file conversion using curl.
curl https://sqlizer.io/api/files/ \
-H "Authorization: Bearer {API-KEY}" \
-d DatabaseType="MySQL" \
-d FileType=xlsx \
-d FileName="file.xlsx" \
-d TableName="table_name" \
-d FileHasHeaders=true
curl https://sqlizer.io/api/files/ \
-H "Authorization: Bearer {API-KEY}" \
-d DatabaseType="SQLServer" \
-d FileType=csv \
-d FileName="file.csv" \
-d TableName="table_name" \
-d FileHasHeaders=true
curl https://sqlizer.io/api/files/ \
-H "Authorization: Bearer {API-KEY}" \
-d DatabaseType="SQLServer" \
-d FileType=xml \
-d FileName="file.xml" \
-d TableName="table_name"
curl https://sqlizer.io/api/files/ \
-H "Authorization: Bearer {API-KEY}" \
-d DatabaseType="MySQL" \
-d FileType=json \
-d FileName="file.json" \
-d TableName="table_name"
If the request is successful the server will respond with a HTTP 200 code and a JSON representation of the file conversion. The ID field is especially important as it is used in the url of all future requests for this file conversion.
Below is an example of the JSON that might be returned by the API.
{
"Status": "New",
"CheckTableExists": true,
"InsertSpacing": 250,
"FileType": "xlsx",
"DatabaseType": "MySQL",
"TableName": "table_name",
"ID": "gKKIyEhQFH5we4dvvpRYABixt2RelK6UFDpG0wa4zc2VEcnBuwwEgN4nKX8PKavXEXnXNrOYr1zAgSGFGUg",
"FileName": "file.xlsx",
"FileHasHeaders": true
}
Once you have a file ID you can begin uploading your file data by sending POST requests to
https://sqlizer.io/api/files/{ID}/data/
.
The SQLizer API allows you to upload your data in a single request or multiple requests. The latter is achieved by splitting the file into parts and sending each individually. Most files can be uploaded in a single request but if your file is larger than 100MB or you have an unreliable connection an upload in multiple parts is recommended.
This guide uses the single request method, for more information on the multiple requests approach, see the page on multipart-upload.
To upload your file in a single request the file should be encoded in a multipart form with the
parameter name 'file' and sent to https://sqlizer.io/api/files/{ID}/data/
as a POST
request.
curl https://sqlizer.io/api/files/gKKIyEhQFH5we4dvvpRYABixt2RelK6UFDpG0wa4zc2VEcnBuwwEgN4nKX8PKavXEXnXNrOYr1zAgSGFGUg/data/ \
-H "Authorization: Bearer {API-KEY}" \
-F "file=@/path/to/the/file.xlsx"
Once you have finished uploading your file you can tell SQLizer to begin conversion by sending a PUT
request to https://sqlizer.io/api/files/{ID}/
to set the Status to 'Uploaded'.
curl -X PUT https://sqlizer.io/api/files/gKKIyEhQFH5we4dvvpRYABixt2RelK6UFDpG0wa4zc2VEcnBuwwEgN4nKX8PKavXEXnXNrOYr1zAgSGFGUg/ \
-H "Authorization: Bearer {API-KEY}" \
-d Status=Uploaded
Once your file upload is finalised it will be placed in a queue for processing. You can check on
its progress with a GET request to https://sqlizer.io/api/files/{ID}/
.
curl https://sqlizer.io/api/files/gKKIyEhQFH5we4dvvpRYABixt2RelK6UFDpG0wa4zc2VEcnBuwwEgN4nKX8PKavXEXnXNrOYr1zAgSGFGUg/ \
-H "Authorization: Bearer {API-KEY}"
Here's an example of the kind of response you might get:
{
"Status": "Processing",
"CheckTableExists": true,
"InsertSpacing": 250,
"FileType": "xlsx",
"DatabaseType": "MySQL",
"TableName": "table_name",
"ID": "gKKIyEhQFH5we4dvvpRYABixt2RelK6UFDpG0wa4zc2VEcnBuwwEgN4nKX8PKavXEXnXNrOYr1zAgSGFGUg",
"FileName": "file.xlsx",
"FileHasHeaders": true,
"PercentComplete": "32",
}
You will see the Status
property update through a number of statuses and hopefully react a status of
Complete
after a few seconds. For information on what each of these statuses mean, check the
HTTP Reference page.
Once the file's "Status" property reaches Complete
the JSON returned from a GET request to the file's URL
will contain a ResultUrl
property.
{
"Status": "Complete",
"CheckTableExists": true,
"InsertSpacing": 250,
"FileType": "xlsx",
"DatabaseType": "MySQL",
"TableName": "table_name",
"ID": "gKKIyEhQFH5we4dvvpRYABixt2RelK6UFDpG0wa4zc2VEcnBuwwEgN4nKX8PKavXEXnXNrOYr1zAgSGFGUg",
"FileName": "file.xlsx",
"FileHasHeaders": true,
"ResultUrl": "https://example.com/file-download-link",
"ResultRows": 5499,
}
You can download the converted file from that URL.
curl https://example.com/file-download-link
Note: You do not need to put the SQLizer API key on the download request as an Authorization header, as this URL will be an Amazon S3 signed URL, not a SQLizer API request.