ffc-pay-etl-framework
Version:
A framework for creating ETL pipelines in node
128 lines (123 loc) • 2.73 kB
JavaScript
const {
Etl,
Loaders,
Destinations,
Connections,
Misc,
} = require('ffc-pay-etl-framework')
const csvFile = `${process.cwd()}/test/fixtures/Crops.csv`
const columns = [
'DistCode',
'Year',
'StateCode',
'StateName',
'DistName',
'RICEAREA',
'RICEPRODUCTION',
'RICEYIELD',
'WHEATAREA',
'WHEATPRODUCTION',
'WHEATYIELD',
'KHARIFSORGHUMAREA',
'KHARIFSORGHUMPRODUCTION',
'KHARIFSORGHUMYIELD',
'RABISORGHUMAREA',
'RABISORGHUMPRODUCTION',
'RABISORGHUMYIELD',
'SORGHUMAREA',
'SORGHUMPRODUCTION',
'SORGHUMYIELD',
'PEARLMILLETAREA',
'PEARLMILLETPRODUCTION',
'PEARLMILLETYIELD',
'MAIZEAREA',
'MAIZEPRODUCTION',
'MAIZEYIELD',
'FINGERMILLETAREA',
'FINGERMILLETPRODUCTION',
'FINGERMILLETYIELD',
'BARLEYAREA',
'BARLEYPRODUCTION',
'BARLEYYIELD',
'CHICKPEAAREA',
'CHICKPEAPRODUCTION',
'CHICKPEAYIELD',
'PIGEONPEAAREA',
'PIGEONPEAPRODUCTION',
'PIGEONPEAYIELD',
'MINORPULSESAREA',
'MINORPULSESPRODUCTION',
'MINORPULSESYIELD',
'GROUNDNUTAREA',
'GROUNDNUTPRODUCTION',
'GROUNDNUTYIELD',
'SESAMUMAREA',
'SESAMUMPRODUCTION',
'SESAMUMYIELD',
'RAPESEEDANDMUSTARDAREA',
'RAPESEEDANDMUSTARDPRODUCTION',
'RAPESEEDANDMUSTARDYIELD',
'SAFFLOWERAREA',
'SAFFLOWERPRODUCTION',
'SAFFLOWERYIELD',
'CASTORAREA',
'CASTORPRODUCTION',
'CASTORYIELD',
'LINSEEDAREA',
'LINSEEDPRODUCTION',
'LINSEEDYIELD',
'SUNFLOWERAREA',
'SUNFLOWERPRODUCTION',
'SUNFLOWERYIELD',
'SOYABEANAREA',
'SOYABEANPRODUCTION',
'SOYABEANYIELD',
'OILSEEDSAREA',
'OILSEEDSPRODUCTION',
'OILSEEDSYIELD',
'SUGARCANEAREA',
'SUGARCANEPRODUCTION',
'SUGARCANEYIELD',
'COTTONAREA',
'COTTONPRODUCTION',
'COTTONYIELD',
'FRUITSAREA',
'VEGETABLESAREA',
'FRUITSANDVEGETABLESAREA',
'POTATOESAREA',
'ONIONAREA',
'FODDERAREA',
]
const etl = new Etl.Etl()
etl
.connection(
new Connections.PostgresDatabaseConnection({
name: 'MyNewConnection',
username: 'postgres',
password: 'ppp',
host: 'localhost',
})
)
.loader(Loaders.CSVLoader({ path: csvFile, columns }))
.destination(
Destinations.PostgresDestination(
{
table: 'target_table',
connection: 'MyConnection',
mapping: [
{
column: 'Dist Code',
targetColumn: 'dist_code',
targetType: 'string',
},
],
includeErrors: false,
},
new Misc.PostgresSQLTask({
connectionname: 'MyConnection',
/* eslint-disable-next-line no-template-curly-in-string */
sql: "INSERT INTO TARGET_TABLE (ColumnA, ColumnB, ColumnC) VALUES ('\\${columns.DistCode}', '\\${columns.Year}', '\\${columns.StateCode}');",
})
)
)
.pump()