SQLServerWriter__Writer插件_使用手冊_數據集成-阿裏雲
1 快速介紹
SQLServerWriter 插件實現了寫入數據到 SQLServer 主庫的目的表的功能。在底層實現上, SQLServerReader 通過 JDBC 連接遠程 SQLServer 數據庫,並執行相應的 insert into ...的 sql 語句將數據寫入 SQLServer,內部會分批次提交入庫。
SQLServerWriter 麵向ETL開發工程師,他們使用 SQLServerWriter 從數倉導入數據到 SQLServer。同時 SQLServerWriter 亦可以作為數據遷移工具為DBA等用戶提供服務。
2 實現原理
SQLServerWriter 通過 CDP 框架獲取 Reader 生成的協議數據,生成insert into...
(當主鍵/唯一性索引衝突時會寫不進去衝突的行),性能考慮,采用了 PreparedStatement + Batch
,並且設置了:rewriteBatchedStatements=true
,將數據緩衝到線程上下文 Buffer 中,當 Buffer 累計到預定閾值時,才發起寫入請求。
注意:目的表所在數據庫必須是主庫才能寫入數據;整個任務至少需要具備 insert into...的權限,是否需要其他權限,取決於你任務配置中在 preSql 和 postSql 中指定的語句。
3 功能說明
3.1 配置樣例
- 使用RDS的Instance配置一個寫入SQLServer的作業。
{
"type": "job",
"traceId": "您可以在這裏填寫您作業的追蹤ID,建議使用業務名+您的作業ID",
"version": "1.0",
"configuration": {
"reader": {
"plugin": "SQLServer",
"parameter": {
"instanceName": "rds.aliyun.com",
"username": "username",
"password": "password",
"table": "table",
"column": [
"*"
],
"where": "1 = 1"
}
},
"writer": {
"plugin": "SQLServer",
"parameter": {
"instanceName": "instanceName",
"database": "database",
"username": "username",
"password": "password",
"table": "table",
"column": [
"*"
],
"preSql": [
"delete from XXX;"
]
}
}
}
}
- 使用JDBC配置一個向RDS寫入數據的作業
{
"type": "job",
"traceId": "您可以在這裏填寫您作業的追蹤ID,建議使用業務名+您的作業ID",
"version": "1.0",
"configuration": {
"reader": {
"plugin": "SQLServer",
"parameter": {
"instanceName": "rds.aliyun.com",
"username": "username",
"password": "password",
"table": "table",
"column": [
"*"
],
"where": "1 = 1"
}
},
"writer": {
"plugin": "SQLServer",
"parameter": {
"jdbcUrl": "jdbc:SQLServer://ip:port;DatabaseName=%s",
"username": "username",
"password": "password",
"table": "table",
"column": [
"*"
],
"preSql": [
"delete from XXX;"
]
}
}
}
}
3.2 參數說明
instanceName
描述: 阿裏雲RDS實例名稱(Instance名稱)。用戶使用該配置指定RDS的Instance名稱,CDP將翻譯為底層執行的jdbc連接串連接。
instanceName指定的是RDS實例,類似SQLServer實例,需要和database配合使用。
必選:是
默認值:無
jdbcUrl
描述:對於CDP部分私有雲場景,數據庫遷移場景等,其本身數據源是普通SQLServer數據庫不是RDS,對於這類場景,用戶可以指定jdbc信息直連。
jdbcUrl和instanceName/database兩類信息概念上是等同的,因此隻能配置其一。如果兩者均配置,CDP默認將使用jdbc信息。
必選:是
默認值:無
database
- 描述: 阿裏雲RDS數據庫名稱。
- 必選:是
- 默認值:無
username
- 描述:數據源的用戶名
- 必選:是
- 默認值:無
password
- 描述:數據源指定用戶名的密碼
- 必選:是
- 默認值:無
table
- 描述:所選取的需要同步的表。
- 必選:是
- 默認值:無
column
- 描述:所配置的表中需要同步的列名集合。以英文逗號(,)進行分隔。
我們強烈不推薦用戶使用默認列情況
- 必選:是
- 默認值:無
- 描述:所配置的表中需要同步的列名集合。以英文逗號(,)進行分隔。
preSql
- 描述:執行數據同步任務之前率先執行的sql語句,目前隻允許執行一條SQL語句,例如清除舊數據。
- 必選:否
- 默認值:無
postSql
- 描述:執行數據同步任務之後執行的sql語句,目前隻允許執行一條SQL語句,例如加上某一個時間戳。
- 必選:否
- 默認值:無
batchSize
- 描述:一次性批量提交的記錄數大小,該值可以極大減少CDP與SQLServer的網絡交互次數,並提升整體吞吐量。但是該值設置過大可能會造成CDP運行進程OOM情況。
- 必選:否
- 默認值:512
3.3 類型轉換
目前 SQLServerWriter支持大部分 SQLServer類型,但也存在部分沒有支持的情況,請注意檢查你的類型。
下麵列出 SQLServerWriter針對 SQLServer類型轉換列表:
CDP 內部類型 | SQLServer 數據類型 |
---|---|
Long | bigint, int, smallint, tinyint |
Double | float, decimal, real, numeric |
String | char,nchar,ntext,nvarchar,text,varchar,nvarchar(MAX),varchar(MAX) |
Date | date, datetime, time |
Boolean | bit |
Bytes | binary,varbinary,varbinary(MAX),timestamp |
請注意:
- 除上述羅列字段類型外,其他類型均不支持。
- timestamp類型作為二進製類型。
4 FAQ
Q: SQLServerWriter 執行 postSql 語句報錯,那麼數據導入到目標數據庫了嗎?
A: CDP 導入過程存在三塊邏輯,pre 操作、導入操作、post 操作,其中任意一環報錯,CDP 作業報錯。由於 CDP 不能保證在同一個事務完成上述幾個操作,因此有可能數據已經落入到目標端。
Q: 按照上述說法,那麼有部分髒數據導入數據庫,如果影響到線上數據庫怎麼辦?
A: 目前有兩種解法,第一種配置 pre 語句,該 sql 可以清理當天導入數據, CDP 每次導入時候可以把上次清理幹淨並導入完整數據。第二種,向臨時表導入數據,完成後再 rename 到線上表。
Q: 上麵第二種方法可以避免對線上數據造成影響,那我具體怎樣操作?
A: 可以配置臨時表導入
最後更新:2016-11-23 16:03:59
上一篇:
MySQLWriter__Writer插件_使用手冊_數據集成-阿裏雲
下一篇:
PostgreSQLWriter__Writer插件_使用手冊_數據集成-阿裏雲
apache日誌__常見日誌格式_用戶指南_日誌服務-阿裏雲
客戶端及連接池__用戶指南_雲數據庫 PetaData-阿裏雲
阿裏雲總裁胡曉明:幫助企業完成技術創新,做有溫度的阿裏雲
查詢字節緩存命中率__資源監控接口_API 手冊_CDN-阿裏雲
CreateRules__轉發規則相關API_API 參考_負載均衡-阿裏雲
創建隊列__隊列操作_快速入門_消息服務-阿裏雲
修改共享帶寬包帶寬__NAT網關相關接口_API 參考_雲服務器 ECS-阿裏雲
免費版和高級版區別__產品簡介_數據管理-阿裏雲
ListPolicyVersions__授權策略管理接口_RAM API文檔_訪問控製-阿裏雲
Open API 簡介__Open API 參考_企業級分布式應用服務 EDAS-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲