The SQLServerReader plugin enables data extraction from SQL Server databases. Under the hood, SQLServerReader connects to a remote SQL Server database via github.com/microsoft/go-mssqldb
and executes SQL queries to retrieve data from the SQL Server.
SQLServerReader connects to the remote SQL Server database using github.com/microsoft/go-mssqldb
and generates SQL queries based on user-provided information. These queries are then sent to the remote SQL Server, and the returned results are assembled into an abstract dataset using go-etl's custom data types before being passed to downstream Writer processing. This differs from directly using github.com/microsoft/go-mssqldb
.
SQLServerReader implements specific queries by invoking the query process defined in dbmsreader
using go-etl's custom storage/database
DBWrapper. DBWrapper encapsulates many database/sql
interfaces and abstracts the database dialect. For SQL Server, it uses the dialect implemented in storage/database/sqlserver
.
Configuring a job to synchronize data from a SQL Server database to a local destination:
{
"job":{
"content":[
{
"reader":{
"name": "sqlserverreader",
"parameter": {
"username": "sa",
"password": "Breeze_0806",
"column": ["*"],
"connection": {
"url": "sqlserver://192.168.15.130:1433?database=test&encrypt=disable",
"table": {
"db":"test",
"schema":"SOURCE",
"name":"mytable"
}
},
"split" : {
"key":"id"
},
"where": "",
"querySql":["select a,b from table_a join table_b on table_a.id = table_b.id"]
}
}
}
]
}
}
- Description: Specifies the connection information for the remote SQL Server. The basic format is
sqlserver://ip:port?database=db&encrypt=disable
, whereip:port
represents the IP address and port of the SQL Server, anddb
is the default database to connect to. See go-mssqldb for more connection configuration details. - Required: Yes
- Default: None
- Description: Specifies the SQL Server database user.
- Required: Yes
- Default: None
- Description: Specifies the password for the SQL Server database user.
- Required: Yes
- Default: None
Describes the SQL Server table information.
- Description: Specifies the database name of the SQL Server table.
- Required: Yes
- Default: None
- Description: Specifies the schema name of the SQL Server table.
- Required: Yes
- Default: None
- Description: Specifies the table name of the SQL Server table.
- Required: Yes
- Default: None
- Description: Specifies the set of column names to synchronize from the configured table. Use a JSON array to describe the column information. Users can use
*
to select all columns by default, e.g.,["*"]
. Supports column pruning (selecting only specific columns for export) and column reordering (exporting columns in a different order than the table schema). Also supports constant configuration, where users need to follow SQL Server syntax, e.g.,["id", "true", "power(2,3)"]
, whereid
is a regular column name,'hello'::varchar
is a string constant,true
is a boolean value,2.5
is a floating-point number, andpower(2,3)
is a function. - Required: Yes
- Default: None
- Description: Specifies the split key for the SQL Server table. The split key must be of type bigInt/string/time, assuming the data is evenly distributed based on the split key.
- Required: No
- Default: None
- Description: Specifies the time precision for the SQL Server table's time split key. Used to describe the smallest unit of time, such as day, minute, second, millisecond, microsecond, or nanosecond.
- Required: No
- Default: None
- Description: Specifies the default data type for the SQL Server table's split key. Values can be bigInt/string/time. This will check the type of the table's split key, so it's important to ensure the type is correct.
- Required: No
- Default: None
- Description: Specifies the default minimum value for the SQL Server table's split key.
- Required: No
- Default: None
- Description: Specifies the default maximum value for the SQL Server table's split key.
- Required: No
- Default: None
- Description: Specifies the WHERE condition for the SELECT statement.
- Required: No
- Default: None
- Description: In some scenarios, the
where
configuration may not be sufficient to describe the filtering conditions. Users can use this configuration to define custom SQL queries. When this option is configured, the DataX system will ignore thetable
,column
, and other configurations and directly use the content of this configuration to filter the data. For example, it can be used for data synchronization after performing a join operation on multiple tables, such asselect a,b from table_a join table_b on table_a.id = table_b.id
. WhenquerySql
is configured, SQLServerReader ignores the configuration oftable
,column
, andwhere
options, andquerySql
takes priority over these options. - Required: No
- Default: None
- Description: Specifies whether to remove leading and trailing spaces for SQL Server's char and nchar types.
- Required: No
- Default: false
Currently, SQLServerReader supports most SQL Server data types, but there may be some unsupported types. Please check your data types accordingly.
Below is a conversion table for SQLServerReader with respect to SQL Server data types:
go-etl Type | SQL Server Data Type |
---|---|
bool | bit |
bigInt | bigint, int, smallint, tinyint |
decimal | numeric, real, float |
string | char, varchar, text, nchar, nvarchar, ntext |
time | date, time, datetimeoffset, datetime2, smalldatetime, datetime |
bytes | binary, varbinary, varbinary(max) |
Pending testing.