1.3.6 • Published 4 years ago
npm-mssqlbulksupport v1.3.6
Introduction
Este package tem como objetivo suportar o bulk insert do mssql
Installation
npm i npm-mssqlbulksupport
Functions
getBulkFromTable
- Criar uma tabela (Dimensão) do tipo sql.Table para ser usada no bulk, esta tabela vai alimentar uma dimensão no data warehouse;
- Vai a base de dados destino buscar os atributos e os seus tipos.
Input
- Conn: String de conexão a base de dados;
- tableName: Nome da tabela;
Output:
Objeto com:
- tempDim: Retorna um objecto do tipo "sql.Table"
- listOfAtrib: Retorna um array com ordem pela qual os atributos foram adicionados, este array vai permitir saber qual ordem a seguir para adicionar cada row da tabela.
getBulkFromNewTable
- Criar uma tabela (Lookup Table),do tipo sql.Tabl, para ser usada no bulk, esta tabela é conhecida como lookup table e vai fazer o mapeamento entre as Surrogate Keys e Natural Keys;
- Vai a base de dados destino buscar os atributos e os seus tipos.
Input
- lookupName: Nome da tabela;
- atributes: atributos a ser adicionados a lookup table.
Output:
Objeto:
- lookup_table: Retorna um objecto do tipo "sql.Table".
- listOfLookupAtrib: Retorna um array com ordem pela qual os atributos foram adicionados, este array vai permitir saber qual ordem a seguir para adicionar cada row da tabela.
getBulkFromTables
- Cria uma tabela, do tipo sql.Table, para ser usada no bulk. Esta tabela tem a estrutura indicada pelo utilizador no output.
- Vai a fonte buscar o tipo de dados de cada atributo.
Input
- conn: string para conexao a base de dados das tabelas;
- outputTableName: Nome da tabela;
- table1: nome do primeiro objeto/tabela usado nesta operação;
- table2: nome do segundo objeto/tabela usado nesta operação
- atributesProjection: atributos a ser adicionados na tabela resultante(Projeção).
Output:
- tempTable: Retorna um objecto do tipo "sql.Table"
- listOfAtrib: Retorna um array com ordem pela qual os atributos foram adicionados; este array vai permitir saber qual ordem a seguir para adicionar cada row da tabela;
- select: retorna uma string para ser usada na projeçao quando feita a query a fonte.
getBulkFromPartOfTable
- Cria uma tabela, do tipo sql.Table, para ser usada no bulk. Esta tabela tem a estrutura indicada pelo utilizador no output.
- Vai a fonte buscar o tipo de dados de cada atributo.
Input
- conn: string para conexao a base de dados das tabelas;
- outputTableName: Nome da tabela;
- atributesProjection: atributos a ser adicionados na tabela resultante(Projeção).
Output:
- tempTable: Retorna um objecto do tipo "sql.Table"
- listOfAtrib: Retorna um array com ordem pela qual os atributos foram adicionados; este array vai permitir saber qual ordem a seguir para adicionar cada row da tabela;
- select: retorna uma string para ser usada na projeçao quando feita a query a fonte.
Quick Example
var bulkSupport = require("npm-mssqlbulksupport");
/**
* Exemplo da criação de uma dimensao;
*/
async function testeBulkFromTable(){
try {
var result= await bulkSupport.getBulkFromTable("Server="MyServer";User Id="MyId";Password="MyPass";database="teste";encrypt=true;", "dim_customer");
} catch (e) {
console.log(e);
}
}
/**
* Exemplo da criação de uma lookupTable;
*/
async function testeBulkFromNewTable(){
var atributes=[ { name:
[ 'customer_id' ],
type: [ 'int' ]
} ]
try {
var result= await bulkSupport.getBulkFromNewTable("dim_customer","customer_Key",atributes);
} catch (e) {
console.log(e);
}
}
/**
* Exemplo da criação de uma operação de join;
*/
async function testeBulkFromTables(){
var atributesProjection=[
{
pk: [ 'true' ],
table: [ 'Vendas_Linhas' ],
name: [ 'inCodigo' ],
rename: [ 'CodVenda' ]
},
{
table: [ 'Vendas_Linhas' ],
name: [ 'dhDate' ],
rename: [ 'Data' ]
},
{
table: [ 'Vendas_Cabeçalho' ],
name: [ 'teLocalidade' ],
rename: [ 'Localidade' ]
},
{
table: [ 'Vendas_Cabeçalho' ],
name: [ 'loInterna' ],
rename: [ 'Interna' ]
}
]
try {
var result= await bulkSupport.getBulkFromTables("Server="MyServer";User Id="MyId";Password="MyPass";database="teste";encrypt=true;","Vendas","Vendas_Linhas","Vendas_Cabeçalho",atributesProjection);
} catch (e) {
console.log(e);
}
}
function testeBulkFromPartOfTable(){
var atributesProjection=['inCodigo' ,
'dhDate',
'teLocalidade' ,
'loInterna' ]
try {
var result= await bulkSupport.getBulkFromTables("Server="MyServer";User Id="MyId";Password="MyPass";database="teste";encrypt=true;","Vendas",atributesProjection);
} catch (e) {
console.log(e);
}
}
testeBulkFromTable();
testeBulkFromNewTable();
testeBulkFromTables();
testeBulkFromPartOfTable();