El origen de datos GBase8a permite leer y escribir datos en GBase8a. Este tema describe las capacidades de sincronización de datos de GBase8a en DataWorks.
GBase8a Reader y GBase8a Writer admiten:
Lectura desde varias tablas en una sola tarea de sincronización
Filtrado de filas con condiciones WHERE para sincronización incremental
Particionamiento de tablas grandes por clave primaria para lecturas paralelas
Escritura de datos con hooks SQL de pre-ejecución y post-ejecución
Limitaciones
GBase8a Reader y GBase8a Writer son compatibles con Serverless resource groups (recommended) y exclusive resource groups for Data Integration.
Cuando una sentencia INSERT INTO encuentra un conflicto de clave primaria o índice único, las filas en conflicto no se escriben.
Los datos solo pueden escribirse en una tabla de destino dentro de la base de datos principal.
La tarea requiere como mínimo el permiso INSERT INTO. Es posible que se necesiten permisos adicionales para las sentencias especificadas en
preSqlypostSql.GBase8a Writer no admite el parámetro
writeMode.
Requisitos previos
Agregue un origen de datos GBase8a a DataWorks antes de desarrollar una tarea de sincronización. Siga las instrucciones en Gestión de orígenes de datos. Las descripciones de los parámetros están disponibles en la consola de DataWorks al agregar el origen de datos.
Configurar una tarea de sincronización
Configure una tarea de sincronización sin conexión para una sola tabla mediante la interfaz visual o el editor de código:
Interfaz visual: Configure in codeless UI
Editor de código: Configure in code editor
Para consultar descripciones de parámetros del editor de código y ejemplos de scripts, consulte Appendix: Script examples and parameter descriptions.
Apéndice: Ejemplos de scripts y descripciones de parámetros
A continuación se presentan scripts y tablas de parámetros que cubren la configuración específica de GBase8a Reader y GBase8a Writer. Para conocer el formato de script unificado que requiere el editor de código, consulte Configure a task in the code editor.
Ejemplo de script de Reader
{
"type": "job",
"steps": [
{
"stepType": "gbase8a",
"parameter": {
"datasource": "",
"username": "",
"password": "",
"where": "",
"column": [
"id",
"name"
],
"splitPk": "id",
"connection": [
{
"table": [
"table"
],
"datasource": ""
}
]
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {
"print": false,
"fieldDelimiter": ","
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
}
}
Parámetros de Reader
| Parámetro | Descripción | Obligatorio | Predeterminado |
|---|---|---|---|
table |
Tablas desde las cuales se sincronizan los datos. Especifíquelas como un arreglo JSON. Se pueden leer varias tablas en paralelo, pero todas deben tener el mismo esquema. GBase8a Reader no verifica la consistencia del esquema entre tablas. El parámetro table debe anidarse dentro del bloque de configuración connection. |
Sí | Ninguna |
column |
Columnas por sincronizar. Especifíquelas como un arreglo JSON. Use ["*"] para seleccionar todas las columnas. Admite selección de columnas específicas, reordenamiento de columnas (exportar en un orden distinto al del esquema), valores constantes (por ejemplo, '123') y columnas de función (por ejemplo, date('now')). No puede dejarse en blanco. |
Sí | Ninguna |
datasource |
Nombre del origen de datos GBase8a agregado en DataWorks. | No | Ninguna |
splitPk |
Columna utilizada para particionar los datos en lecturas paralelas. Utilice una clave primaria de tipo entero para lograr una distribución uniforme de los datos y evitar puntos críticos de acceso. Solo admite tipos enteros; las cadenas, números de punto flotante y fechas no son compatibles y provocan que se ignore esta configuración, volviendo a la lectura por canal único. Déjelo en blanco para deshabilitar el particionamiento. | No | En blanco |
where |
Condición de filtro que se agrega a la consulta SQL. GBase8a Reader construye una consulta a partir de column, table y where para extraer los datos. Utilice where para la sincronización incremental; por ejemplo, establézcalo en gmt_create>$bizdate para sincronizar los datos del día actual. Si se deja en blanco, se realiza una sincronización completa de datos. |
No | Ninguna |
querySql |
Consulta SQL personalizada que anula table, column, where y splitPk. Utilícela cuando where por sí solo no pueda expresar la lógica de filtrado requerida. Cuando se establece querySql, GBase8a Reader ignora los parámetros table, column, where y splitPk. |
No | Ninguna |
fetchSize |
Número de registros obtenidos de la base de datos por lote. Un valor mayor reduce los ciclos de ida y vuelta de red y mejora el rendimiento de lectura. Nota
Valores superiores a 2048 pueden causar un error de memoria insuficiente (OOM) durante la sincronización. |
No | 1,024 |
Ejemplo de script de Writer
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "gbase8a",
"parameter": {
"datasource": "Data source name",
"username": "",
"password": "",
"column": [
"id",
"name"
],
"connection": [
{
"table": [
"Gbase8a_table"
],
"datasource": ""
}
],
"preSql": [
"delete from @table where db_id = -1"
],
"postSql": [
"update @table set db_modify_time = now() where db_id = 1"
]
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Parámetros de Writer
|
Parámetro |
Descripción |
Obligatorio |
Predeterminado |
|
|
Nombre del origen de datos agregado en DataWorks. Debe coincidir exactamente con el nombre del origen de datos agregado. |
Sí |
Ninguna |
|
|
Tabla de destino para la escritura de datos. Especifíquela como un arreglo JSON. El parámetro |
Sí |
Ninguna |
|
|
Columnas de destino donde se escribirán los datos. Separe varias columnas con comas; por ejemplo, |
Sí |
Ninguna |
|
|
Sentencia SQL que se ejecuta antes de la escritura de datos. Utilice |
No |
Ninguna |
|
|
Sentencia SQL que se ejecuta después de completar la escritura de datos. |
No |
Ninguna |
|
|
Número de registros enviados por lote. Un valor mayor reduce los ciclos de ida y vuelta de red y mejora el rendimiento de escritura. Valores excesivamente grandes pueden causar un error de memoria insuficiente (OOM) durante la sincronización. |
No |
1,024 |