Commit b8d4d2e4 authored by Cristian Weiland's avatar Cristian Weiland

Issue #48: Reorganize repository, delete unused files and modify readme

Signed-off-by: Cristian Weiland's avatarCristian Weiland <cw14@inf.ufpr.br>
parent 09a6afc8
Projeto utilizando ElasticSearch + Kibana na tentativa de auxiliar a transparência da Universidade Federal do Paraná (UFPR).
O projeto contém dados referentes a:
- Servidores da UFPR
- Gastos Diretos da UFPR
- Diárias de Viagem da UFPR
- Servidores;
- Despesas (pagamentos);
- Despesas (diárias de viagem);
Árvore de Diretórios:
.
├── data - Contém uma diretório para cada mês.
│   ├── workers - Contém dados de Servidores do Portal Transparência (obtidos em http://www.portaldatransparencia.gov.br/downloads/servidores.asp#exercicios2016).
│   │   ├── 2016-12 - Diretório que contém os CSVs referentes a Dezembro de 2016.
│   │   ├── 2016-11 - Diretório que contém os CSVs referentes a Novembro de 2016.
│   │   ├── ...
│   │   └── processed - Diretório que contém CSVs resultantes da união de CSVs do portal transparência.
│   │
│   ├── travel_allowance - Contém dados de Diárias de Viagem do Portal Transparência (obtidos em http://www.portaldatransparencia.gov.br/downloads/mensal.asp?c=Diarias).
│   │   ├── 2016-12 - Diretório que contém os CSVs referentes a Dezembro de 2016.
│   │   ├── 2016-11 - Diretório que contém os CSVs referentes a Novembro de 2016.
│   │   ├── ...
│   │   └── processed - Diretório que contém CSVs resultantes da união de CSVs do portal transparência.
│   │
│   └── expenses - Contém dados de Gastos do Portal Transparência (obtidos em http://www.portaldatransparencia.gov.br/downloads/mensal.asp?c=GastosDiretos).
│      ├── 2016-12 - Diretório que contém os CSVs referentes a Dezembro de 2016.
│      ├── 2016-11 - Diretório que contém os CSVs referentes a Novembro de 2016.
│      ├── ...
│      └── processed - Diretório que contém CSVs resultantes da união de CSVs do portal transparência.
├── configs - Contém arquivos de configuração gerados por scripts.
│   ├── workers - Contém arquivos de configuração de Servidores.
│   │   ├── JSON - Contém arquivos de configuração no formato JSON, usados pelo script merge_files_es.py.
│   │   └── logstash - Contém arquivos de configuração para o logstash.
│   │
│   ├── travel_allowance - Contém arquivos de configuração de Servidores.
│   │   └── logstash - Contém arquivos de configuração para o logstash.
│   │
│   └── expenses - Contém arquivos de configuração de Gastos.
│      └── logstash - Contém arquivos de configuração para o logstash.
├── README - Descreve o repositório.
└── scripts - Contém scripts que auxiliam no projeto.
   ├── insert_data.sh - Script que gerencia todos os scripts de inserção de dados: insere servidores e despesas (pagamentos e diárias).
   ├── workers - Contém scripts para gerenciar dados de Servidores.
   ├── travel_allowance - Contém scripts para gerenciar dados de Diárias de Viagens.
   ├── expenses - Contém scripts para gerenciar dados de Pagamentos.
......
#!/bin/bash
# This scripts gets a zip file in ~/Downloads, moves it to a folder in path (probably transparencia/data/expenses), unzips it and removes the zip file.
# Input: Date (year and month, separated by hyphen).
# Ex: ./unzip.sh 2015-12
if [ "$#" -ne 2 ]; then
echo "Usage $0 <date>"
exit
fi
date=$1
path="../../data/expenses/"
dateWithoutHyphen=${date//-}
mkdir $path$date
mv ~/Downloads/$dateWithoutHyphen_GastosDiretos.zip $path$date
unzip $path$date/$dateWithoutHyphen_GastosDiretos.zip
mv $path$dateWithoutHyphen_GastosDiretos.csv $path$date
rm $path$date/$dateWithoutHyphen_GastosDiretos.zip
#!/bin/bash
# This script only calls unzip.sh for all months.
./unzip.sh 2015-12
./unzip.sh 2015-11
./unzip.sh 2015-10
./unzip.sh 2015-09
./unzip.sh 2015-08
./unzip.sh 2015-07
./unzip.sh 2015-06
./unzip.sh 2015-05
./unzip.sh 2015-04
./unzip.sh 2015-03
./unzip.sh 2015-02
./unzip.sh 2015-01
./unzip.sh 2014-12
./unzip.sh 2014-11
./unzip.sh 2014-10
./unzip.sh 2014-09
./unzip.sh 2014-08
./unzip.sh 2014-07
./unzip.sh 2014-06
./unzip.sh 2014-05
./unzip.sh 2014-04
./unzip.sh 2014-03
./unzip.sh 2014-02
./unzip.sh 2014-01
./unzip.sh 2013-12
./unzip.sh 2013-11
./unzip.sh 2013-10
./unzip.sh 2013-09
./unzip.sh 2013-08
./unzip.sh 2013-07
./unzip.sh 2013-06
./unzip.sh 2013-05
./unzip.sh 2013-04
./unzip.sh 2013-03
./unzip.sh 2013-02
./unzip.sh 2013-01
./unzip.sh 2012-12
./unzip.sh 2012-11
./unzip.sh 2012-10
./unzip.sh 2012-09
./unzip.sh 2012-08
./unzip.sh 2012-07
./unzip.sh 2012-06
./unzip.sh 2012-05
./unzip.sh 2012-04
./unzip.sh 2012-03
./unzip.sh 2012-02
./unzip.sh 2012-01
./unzip.sh 2011-12
./unzip.sh 2011-11
./unzip.sh 2011-10
./unzip.sh 2011-09
./unzip.sh 2011-08
./unzip.sh 2011-07
./unzip.sh 2011-06
./unzip.sh 2011-05
./unzip.sh 2011-04
./unzip.sh 2011-03
./unzip.sh 2011-02
./unzip.sh 2011-01
The easiest way to insert health ministry data is to use 'insert_ministry_of_health.sh'.
Script's input: Year, month and day from the data to be inserted, ElasticSearch's user and password. The day should be the last day of the month.
The script also uses a config file named 'config.sh'. This is a small shell script that need to only declare some variables: index, host and filter:
- Index: The index prefix to be saved on ElasticSearch.
- Host: The hostname of the machine runnning ElasticSearch.
- Filter: A string that will be used to 'egrep' the data obtained from Portal Transparência.
Example: ./insert_ministry_of_health.sh 2016 10 31 myuser mypass
Example 2: ./insert_ministry_of_health.sh 2014 11 30 power ranger
The other script's will be called by 'insert_ministry_of_health.sh' correctly.
# This file only contains some config variables:
# Index prefix: The prefix of the index in elasticsearch. Ex: gastos
index="ms-gastos-pagamentos"
# Filter: A string that will be used to 'egrep' the data obtained from Portal Transparência.
filter="MINISTERIO DA SAUDE"
# Host: ElasticSearch's host. Ex: "localhost"
host="localhost"
#!/usr/bin/env python3
# WARNING: This script should not be called directly. Look at 'insert_ministry_of_health.sh' before calling this script.
# This script is used to create a Logstash Config file.
# Input: year, month and day, ElasticSearch's username and password.
import sys, csv, json, math, subprocess
from pathlib import Path
from subprocess import call
if len(sys.argv) != 8:
print("Usage: " + sys.argv[0] + " <year (2016)> <month (01)> <day (31)> <index> <host> <username> <password>")
sys.exit()
with open('logstash_config.example') as infile:
example = infile.read()
output = example % { "timestamp": sys.argv[3] + '/' + sys.argv[2] + '/' + sys.argv[1] + ' 00:00:00'
, "date": sys.argv[1] + '-' + sys.argv[2]
, "index": sys.argv[4]
, "host": sys.argv[5]
, "user": sys.argv[6]
, "password": sys.argv[7] }
with open('./tmp_' + sys.argv[1] + '-' + sys.argv[2] + '/config-' + sys.argv[1] + '-' + sys.argv[2], 'w') as outfile:
outfile.write(output)
#!/bin/bash
# This script is the one that should be called to insert data from one month.
# Input: Year, month and day from the data to be inserted, ElasticSearch's user and password. The day should be the last day of the month.
# Example: ./insert_ministry_of_health.sh 2016 10 myuser mypass
# It has 4 steps:
# 1- Download files and put them in the right location.
# 2- Generate logstash config file via create_ministry_of_health_config.py.
# 3- Generate a CSV with only UFPR data via resume_ministry_of_health.sh, which is stored in ./tmp/year-month.csv
# 4- Insert data in ElasticSearch via logstash, using the config file created and the CSV created by resume_ministry_of_health.sh.
# Output: The commands/scripts outputs.
if [ "$#" -ne 4 ]; then
echo "Usage: $0 <year> <month> <user> <password>"
echo "Example: $0 2016 12 myuser mypass"
exit
fi
source ./config.sh
if [ -z ${index+x} ]; then
echo "Var 'index' is unset. Set it in file 'scripts/ministry_of_health/config.sh'.";
exit;
fi
if [ -z ${host+x} ]; then
echo "Var 'host' is unset. Set it in file 'scripts/ministry_of_health/config.sh'.";
exit;
fi
if [ -z ${filter+x} ]; then
echo "Var 'filter' is unset. Set it in file 'scripts/ministry_of_health/config.sh'.";
exit;
fi
# Change variable names to improve legibility
year=$1
month=$2
# Getting the Last day of this month (Using date 2016-05-15 as example):
# First, get next month (201606).
aux=$(date +%Y%m -d "$(date +${year}${month}15) next month")
# Append day 01 (20160601).
temp=$(date -d "${aux}01")
# Remove 1 day: 20160531, get only day: 31.
day=$(date -d "$temp - 1 day" "+%d")
ym=$year-$month
path="./tmp_$ym"
mkdir -p "$path"
# Step 1:
# Download files
request='http://arquivos.portaldatransparencia.gov.br/downloads.asp?a='${year}'&m='${month}'&consulta=GastosDiretos'
curl -o $path/${year}${month}_GastosDiretos.zip $request -H 'Accept-Encoding: gzip, deflate, sdch' -H 'Accept-Language: en-US,en;q=0.8' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Referer: http://transparencia.gov.br/downloads/mensal.asp?c=GastosDiretos' -H 'Cookie: ASPSESSIONIDAQRABSAD=OJDLNBCANLIDINCHJHELHHFB; ASPSESSIONIDAQSDCQAD=BOKBKPNCDKOBJKGAMMEKADFL; _ga=GA1.3.1927288562.1481545643; ASPSESSIONIDSCSBBTCD=IGJLJBBCEEJBGLOOJKGNMHBH' -H 'Connection: keep-alive' --compressed
# Unzip them
unzip -o $path/${year}${month}_GastosDiretos.zip -d $path/
# Remove zip file
rm $path/${year}${month}_GastosDiretos.zip
# Step 2:
./create_ministry_of_health_config.py $year $month "$day" "$index" "$host" $3 $4
# Step 3:
./resume_ministry_of_health.sh "${path}" ${year}-${month} "$filter"
# Step 4:
logstash -f $path/config-${year}-${month} < $path/${year}${month}.csv
# Data inserted, we can now remove it.
rm $path/${year}${month}.csv
rm $path/config-${year}-${month}
rm $path/${year}${month}_GastosDiretos.csv
rmdir $path
input {
stdin {
codec => plain {
charset => "Windows-1252"
}
}
}
filter {
csv {
columns => ["Código Órgão Superior","Nome Órgão Superior","Código Órgão","Nome Órgao","Código Unidade Gestora","Nome Unidade Gestora","Código Grupo Despesa","Nome Grupo Despesa","Código Elemento Despesa","Nome Elemento Despesa","Código Função","Nome Função","Código Subfunção","Nome Subfunção","Código Programa","Nome Programa","Código Ação","Nome Ação","Linguagem Cidadã","Código Favorecido","Nome Favorecido","Número Documento","Gestão Pagamento","Data Pagamento","Valor"]
separator => " "
add_field => { "timestamp" => "%(timestamp)s" }
}
mutate {
convert => { "Código Órgão Superior" => "integer" }
convert => { "Código Órgão" => "integer" }
convert => { "Código Unidade Gestora" => "integer" }
convert => { "Código Grupo Despesa" => "integer" }
convert => { "Código Elemento Despesa" => "integer" }
convert => { "Código Função" => "integer" }
convert => { "Código Subfunção" => "integer" }
convert => { "Código Programa" => "integer" }
convert => { "Código Ação" => "integer" }
convert => { "Código Favorecido" => "integer" }
convert => { "Gestão Pagamento" => "integer" }
convert => { "Valor" => "float" }
}
date {
match => [ "timestamp", "dd/MM/YYYY HH:mm:ss", "ISO8601" ]
target => [ "@timestamp" ]
}
date {
match => [ "Data Pagamento", "dd/MM/YYYY" ]
target => [ "Data Pagamento Timestamp" ]
}
}
output {
elasticsearch {
action => "index"
user => "%(user)s"
password => "%(password)s"
hosts => "http://%(host)s:9200"
index => "%(index)s-%(date)s"
workers => 1
}
stdout {}
}
#!/bin/bash
# WARNING: This script should not be called unless the database is erased. Its still here for 2 reasons:
# 1- Log: To know what months of data have been inserted.
# 2- Example: To give example of how to call script insert_ministry_of_health.sh.
# This script only calls insert_ministry_of_health for all years and months.
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <user> <password>"
echo "Example: $0 myuser mypass"
exit
fi
./insert_ministry_of_health.sh 2017 01 $1 $2
./insert_ministry_of_health.sh 2017 02 $1 $2
./insert_ministry_of_health.sh 2016 12 $1 $2
./insert_ministry_of_health.sh 2016 11 $1 $2
./insert_ministry_of_health.sh 2016 10 $1 $2
./insert_ministry_of_health.sh 2016 09 $1 $2
./insert_ministry_of_health.sh 2016 08 $1 $2
./insert_ministry_of_health.sh 2016 07 $1 $2
./insert_ministry_of_health.sh 2016 06 $1 $2
./insert_ministry_of_health.sh 2016 05 $1 $2
./insert_ministry_of_health.sh 2016 04 $1 $2
./insert_ministry_of_health.sh 2016 03 $1 $2
./insert_ministry_of_health.sh 2016 02 $1 $2
./insert_ministry_of_health.sh 2016 01 $1 $2
./insert_ministry_of_health.sh 2015 12 $1 $2
./insert_ministry_of_health.sh 2015 11 $1 $2
./insert_ministry_of_health.sh 2015 10 $1 $2
./insert_ministry_of_health.sh 2015 09 $1 $2
./insert_ministry_of_health.sh 2015 08 $1 $2
./insert_ministry_of_health.sh 2015 07 $1 $2
./insert_ministry_of_health.sh 2015 06 $1 $2
./insert_ministry_of_health.sh 2015 05 $1 $2
./insert_ministry_of_health.sh 2015 04 $1 $2
./insert_ministry_of_health.sh 2015 03 $1 $2
./insert_ministry_of_health.sh 2015 02 $1 $2
./insert_ministry_of_health.sh 2015 01 $1 $2
./insert_ministry_of_health.sh 2014 12 $1 $2
./insert_ministry_of_health.sh 2014 11 $1 $2
./insert_ministry_of_health.sh 2014 10 $1 $2
./insert_ministry_of_health.sh 2014 09 $1 $2
./insert_ministry_of_health.sh 2014 08 $1 $2
./insert_ministry_of_health.sh 2014 07 $1 $2
./insert_ministry_of_health.sh 2014 06 $1 $2
./insert_ministry_of_health.sh 2014 05 $1 $2
./insert_ministry_of_health.sh 2014 04 $1 $2
./insert_ministry_of_health.sh 2014 03 $1 $2
./insert_ministry_of_health.sh 2014 02 $1 $2
./insert_ministry_of_health.sh 2014 01 $1 $2
./insert_ministry_of_health.sh 2013 12 $1 $2
./insert_ministry_of_health.sh 2013 11 $1 $2
./insert_ministry_of_health.sh 2013 10 $1 $2
./insert_ministry_of_health.sh 2013 09 $1 $2
./insert_ministry_of_health.sh 2013 08 $1 $2
./insert_ministry_of_health.sh 2013 07 $1 $2
./insert_ministry_of_health.sh 2013 06 $1 $2
./insert_ministry_of_health.sh 2013 05 $1 $2
./insert_ministry_of_health.sh 2013 04 $1 $2
./insert_ministry_of_health.sh 2013 03 $1 $2
./insert_ministry_of_health.sh 2013 02 $1 $2
./insert_ministry_of_health.sh 2013 01 $1 $2
#!/bin/bash
# WARNING: This script should not be called directly. Look at 'insert_ministry_of_health.sh' before calling this script.
# Input: First parameter is the path to data files and the second one is the date in the name of the files. Data files can be found in: http://transparencia.gov.br/downloads/mensal.asp?c=GastosDiretos
# Example: ./resume_ministry_of_health.sh ./tmp_2016-11 2016-11 "MINISTERIO DA SAUDE"
# Output: A CSV file in folder processed, filtering the data to get only relevant data (in our case, from MINISTERIO DA SAUDE).
if [ "$#" -ne 3 ]; then
echo "Usage: $0 <path> <date> <filter>"
exit
fi
# Path example: ./tmp_2016-11
path=$1
# Date example: 2016-11
date=$2
# Filter example: "MINISTERIO DA SAUDE"
filter=$3
# dateWithoutHyphen example: 201611
dateWithoutHyphen=${date//-}
input="${path}/${dateWithoutHyphen}_GastosDiretos.csv"
output="${path}/${dateWithoutHyphen}.csv"
# About this command:
# - Grep removes everyone data thas is not from Ministerio da Saude.
# - Tr removes null characters (ctrl + @).
cat "$input" | egrep -w --binary-files=text "$filter" | tr -d '\000' > "$output"
ym=$(date +%Y%m -d "$(date +%Y%m15) next month")
temp=$(date -d "${ym}01")
d=$(date -d "$temp - 1 day" "+%d")
echo $d
#!/bin/bash
# This scripts gets a zip file in ~/Downloads, moves it to a folder in path (probably transparencia/data/travel_allowance), unzips it and removes the zip file.
# Input: Date (year and month, separated by hyphen).
# Ex: ./unzip.sh 2015-12
if [ "$#" -ne 2 ]; then
echo "Usage $0 <date>"
exit
fi
date=$1
path="../../data/travel_allowance/"
dateWithoutHyphen=${date//-}
mkdir $path$date
mv ~/Downloads/${dateWithoutHyphen}_Diarias.zip $path$date
unzip $path$date/${dateWithoutHyphen}_Diarias.zip
mv $path${dateWithoutHyphen}_Diarias.csv $path$date
rm $path$date/${dateWithoutHyphen}_Diarias.zip
#!/bin/bash
# This script only calls unzip.sh for all months.
./unzip.sh 2015-12
./unzip.sh 2015-11
./unzip.sh 2015-10
./unzip.sh 2015-09
./unzip.sh 2015-08
./unzip.sh 2015-07
./unzip.sh 2015-06
./unzip.sh 2015-05
./unzip.sh 2015-04
./unzip.sh 2015-03
./unzip.sh 2015-02
./unzip.sh 2015-01
./unzip.sh 2014-12
./unzip.sh 2014-11
./unzip.sh 2014-10
./unzip.sh 2014-09
./unzip.sh 2014-08
./unzip.sh 2014-07
./unzip.sh 2014-06
./unzip.sh 2014-05
./unzip.sh 2014-04
./unzip.sh 2014-03
./unzip.sh 2014-02
./unzip.sh 2014-01
./unzip.sh 2013-12
./unzip.sh 2013-11
./unzip.sh 2013-10
./unzip.sh 2013-09
./unzip.sh 2013-08
./unzip.sh 2013-07
./unzip.sh 2013-06
./unzip.sh 2013-05
./unzip.sh 2013-04
./unzip.sh 2013-03
./unzip.sh 2013-02
./unzip.sh 2013-01
./unzip.sh 2012-12
./unzip.sh 2012-11
./unzip.sh 2012-10
./unzip.sh 2012-09
./unzip.sh 2012-08
./unzip.sh 2012-07
./unzip.sh 2012-06
./unzip.sh 2012-05
./unzip.sh 2012-04
./unzip.sh 2012-03
./unzip.sh 2012-02
./unzip.sh 2012-01
./unzip.sh 2011-12
./unzip.sh 2011-11
./unzip.sh 2011-10
./unzip.sh 2011-09
./unzip.sh 2011-08
./unzip.sh 2011-07
./unzip.sh 2011-06
./unzip.sh 2011-05
./unzip.sh 2011-04
./unzip.sh 2011-03
./unzip.sh 2011-02
./unzip.sh 2011-01
......@@ -8,6 +8,5 @@ The script also uses a config file named 'config.sh'. This is a small shell scri
- University: An array of n values, with n being the same n as Filter's array. This array should contain the initials from Universities declared in Filter array, in the same order.
Example (inserting data from file 20130930_Cadastro.csv): ./insert_register_payment.sh 2013 09 myuser mypassword
If you want to look at more examples, check add_registers.sh.
The other script's will be called by 'insert_register_payment.sh' correctly.
#!/bin/bash
# WARNING: This was used to insert data, and should not be executed again (unless someone deleted the whole database).
# Input: Kibana/ElasticSearch's user and password.
# Output: Nothing, if it executes correctly. It will insert csv's from http://www.portaldatransparencia.gov.br/downloads/servidores.asp, from 2013-01 to 2016-11.
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <user> <password>"
exit
fi
./insert_register_payment.sh 2016 11 $1 $2
./insert_register_payment.sh 2016 10 $1 $2
./insert_register_payment.sh 2016 09 $1 $2
./insert_register_payment.sh 2016 08 $1 $2
./insert_register_payment.sh 2016 07 $1 $2
./insert_register_payment.sh 2016 06 $1 $2
./insert_register_payment.sh 2016 05 $1 $2
./insert_register_payment.sh 2016 04 $1 $2
./insert_register_payment.sh 2016 03 $1 $2
./insert_register_payment.sh 2016 02 $1 $2
./insert_register_payment.sh 2016 01 $1 $2
./insert_register_payment.sh 2015 12 $1 $2
./insert_register_payment.sh 2015 11 $1 $2
./insert_register_payment.sh 2015 10 $1 $2
./insert_register_payment.sh 2015 09 $1 $2
./insert_register_payment.sh 2015 08 $1 $2
./insert_register_payment.sh 2015 07 $1 $2
./insert_register_payment.sh 2015 06 $1 $2
./insert_register_payment.sh 2015 05 $1 $2
./insert_register_payment.sh 2015 04 $1 $2
./insert_register_payment.sh 2015 03 $1 $2
./insert_register_payment.sh 2015 02 $1 $2
./insert_register_payment.sh 2015 01 $1 $2
./insert_register_payment.sh 2014 12 $1 $2
./insert_register_payment.sh 2014 11 $1 $2
./insert_register_payment.sh 2014 10 $1 $2
./insert_register_payment.sh 2014 09 $1 $2
./insert_register_payment.sh 2014 08 $1 $2
./insert_register_payment.sh 2014 07 $1 $2
./insert_register_payment.sh 2014 06 $1 $2
./insert_register_payment.sh 2014 05 $1 $2
./insert_register_payment.sh 2014 04 $1 $2
./insert_register_payment.sh 2014 03 $1 $2
./insert_register_payment.sh 2014 02 $1 $2
./insert_register_payment.sh 2014 01 $1 $2
./insert_register_payment.sh 2013 12 $1 $2
./insert_register_payment.sh 2013 11 $1 $2
./insert_register_payment.sh 2013 10 $1 $2
./insert_register_payment.sh 2013 09 $1 $2
./insert_register_payment.sh 2013 08 $1 $2
./insert_register_payment.sh 2013 07 $1 $2
./insert_register_payment.sh 2013 06 $1 $2
./insert_register_payment.sh 2013 05 $1 $2
./insert_register_payment.sh 2013 04 $1 $2
./insert_register_payment.sh 2013 03 $1 $2
./insert_register_payment.sh 2013 02 $1 $2
./insert_register_payment.sh 2013 01 $1 $2
......@@ -10,7 +10,6 @@
# Input: Year, Month from CSV file, ElasticSearch's user and password.
# Example (inserting data from file 20130930_Cadastro.csv): ./insert_register_payment.sh 2013 09 myuser mypassword
# If you want to look at more examples, check add_registers.sh.
# Output: The same output as the scripts and commands called.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment