CREATE CONNECTION
创建到外部存储的连接。
语法
CREATE [ OR REPLACE ] CONNECTION [ IF NOT EXISTS ] <connection_name>
STORAGE_TYPE = '<type>'
[ <storage_params> ]
连接参数
连接封装了特定存储后端的凭证和配置。创建连接时,请选择合适的 STORAGE_TYPE 并提供所需参数。下表列出了常见选项:
有关参数含义、可选(命令行)标记/参数以及其他存储类型,请参见 连接参数。展开下面的标签页可查看各存储类型的示例:
为 Amazon S3 和兼容 S3 的服务选择一种认证方法:
CREATE CONNECTION <connection_name>
STORAGE_TYPE = 's3'
ACCESS_KEY_ID = '<your-access-key-id>'
SECRET_ACCESS_KEY = '<your-secret-access-key>';
CREATE CONNECTION <connection_name>
STORAGE_TYPE = 's3'
ROLE_ARN = '<your-role-arn>';
CREATE CONNECTION <connection_name>
STORAGE_TYPE = 'azblob'
ACCOUNT_NAME = '<account-name>'
ACCOUNT_KEY = '<account-key>'
ENDPOINT_URL = 'https://<account-name>.blob.core.windows.net';
CREATE CONNECTION <connection_name>
STORAGE_TYPE = 'gcs'
CREDENTIAL = '<base64-encoded-service-account>';
CREATE CONNECTION <connection_name>
STORAGE_TYPE = 'oss'
ACCESS_KEY_ID = '<your-ak>'
ACCESS_KEY_SECRET = '<your-sk>'
ENDPOINT_URL = 'https://<region-id>[-internal].aliyuncs.com';
CREATE CONNECTION <connection_name>
STORAGE_TYPE = 'cos'
SECRET_ID = '<your-secret-id>'
SECRET_KEY = '<your-secret-key>'
ENDPOINT_URL = '<your-endpoint-url>';
CREATE CONNECTION <connection_name>
STORAGE_TYPE = 'hf'
REPO_TYPE = 'dataset'
REVISION = 'main'
TOKEN = '<optional-access-token>';
对于公共仓库,可省略 TOKEN;对于私有仓库或受速率限制的资源,请包含该参数。
访问控制要求
要创建连接,执行该操作的用户或 current_role 必须具有 CREATE CONNECTION 权限。
修改表连接
要将现有表切换到新连接,请使用 ALTER TABLE ... CONNECTION。该命令可以将外部表重新绑定到不同的连接,而无需重新创建表。
示例
使用 Access Keys
本示例创建了一个名为 toronto 的 Amazon S3 连接,并使用该 toronto 连接创建了一个名为 my_s3_stage 的外部 stage,该 stage 关联到 s3://lake-toronto URL。有关连接的更多实际示例,请参见 使用示例。
CREATE CONNECTION toronto
STORAGE_TYPE = 's3'
ACCESS_KEY_ID = '<your-access-key-id>'
SECRET_ACCESS_KEY = '<your-secret-access-key>';
CREATE STAGE my_s3_stage
URL = 's3://lake-toronto'
CONNECTION = (CONNECTION_NAME = 'toronto');
使用 AWS IAM Role
本示例使用 IAM 角色创建一个 Amazon S3 连接,然后创建一个使用该连接的 stage。这种方式更安全,因为它不需要在 TiDB Cloud Lake 中存储 access keys。
CREATE CONNECTION lake_test
STORAGE_TYPE = 's3'
ROLE_ARN = 'arn:aws:iam::987654321987:role/lake-test';
CREATE STAGE lake_test
URL = 's3://test-bucket-123'
CONNECTION = (CONNECTION_NAME = 'lake_test');
-- You can now query data from your S3 bucket
SELECT * FROM @lake_test/test.parquet LIMIT 1;