Refactoring of the main
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
parent
cbf318690c
commit
f0730efcd9
117
src/commands.rs
Normal file
117
src/commands.rs
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
use clap::{arg, ArgAction, Command};
|
||||||
|
|
||||||
|
pub fn gen_csv_command() -> Command {
|
||||||
|
Command::new("csv")
|
||||||
|
.about("Read csv, output arrow stream")
|
||||||
|
.arg(arg!([path] "Path to CSV file"))
|
||||||
|
.arg(arg!(-d --delimiter <String> "Column delimiter. Assume ,").required(false))
|
||||||
|
.arg(
|
||||||
|
arg!(-i --stdin ... "Read from stdin")
|
||||||
|
.required(false)
|
||||||
|
.action(ArgAction::SetTrue),
|
||||||
|
)
|
||||||
|
.arg(arg!(-q --query <String> "Execute query on the file").required(false))
|
||||||
|
.arg(
|
||||||
|
arg!(-s --summary ... "Summarize the data")
|
||||||
|
.required(false)
|
||||||
|
.action(ArgAction::SetTrue),
|
||||||
|
)
|
||||||
|
.arg(
|
||||||
|
arg!(-t --text ... "Output text instead of binary")
|
||||||
|
.required(false)
|
||||||
|
.action(ArgAction::SetTrue),
|
||||||
|
)
|
||||||
|
.arg(arg!(-P --parquet <String> "Write output as a parquet file").required(false))
|
||||||
|
.arg(
|
||||||
|
arg!(-a --head ... "Print the header of the table")
|
||||||
|
.required(false)
|
||||||
|
.action(ArgAction::SetTrue),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn gen_schema_command() -> Command {
|
||||||
|
Command::new("schema")
|
||||||
|
.about("Several table schema related utilities")
|
||||||
|
.arg(
|
||||||
|
arg!(-i --stdin ... "Read from stdin")
|
||||||
|
.required(false)
|
||||||
|
.action(ArgAction::SetTrue),
|
||||||
|
)
|
||||||
|
.arg(arg!(-d --delimiter <String> "Column delimiter. Assume ,").required(false))
|
||||||
|
.arg(arg!(-n --name <String> "Table name").required(false))
|
||||||
|
.arg(arg!(-l --strlen <String> "Default length for string columns").required(false))
|
||||||
|
.arg(
|
||||||
|
arg!(-s --summary ... "Summarize the schema")
|
||||||
|
.required(false)
|
||||||
|
.action(ArgAction::SetTrue),
|
||||||
|
)
|
||||||
|
.arg(
|
||||||
|
arg!(-p --postgresql ... "Create a postgresql table with schema")
|
||||||
|
.required(false)
|
||||||
|
.action(ArgAction::SetTrue),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn gen_sql_command() -> Command {
|
||||||
|
Command::new("sql")
|
||||||
|
.about("Runs a sql statement on the file")
|
||||||
|
.arg(arg!(-d --delimiter <String> "Column delimiter. Assume ,").required(false))
|
||||||
|
.arg(arg!([statement] "SQL statement"))
|
||||||
|
.arg(
|
||||||
|
arg!(-t --text ... "Input text instead of binary")
|
||||||
|
.required(false)
|
||||||
|
.action(ArgAction::SetTrue),
|
||||||
|
)
|
||||||
|
.arg(arg!(-d --delimiter <String> "Column delimiter").required(false))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn gen_rpq_command() -> Command {
|
||||||
|
Command::new("rpq")
|
||||||
|
.about("Read parquet file")
|
||||||
|
.arg(arg!([path] "Path to the parquet file"))
|
||||||
|
.arg(arg!(-q --query <String> "Execute query on the file").required(false))
|
||||||
|
.arg(
|
||||||
|
arg!(-s --summary ... "Summarize the data")
|
||||||
|
.required(false)
|
||||||
|
.action(ArgAction::SetTrue),
|
||||||
|
)
|
||||||
|
.arg(
|
||||||
|
arg!(-i --stdin ... "Read from stdin instead than from a file")
|
||||||
|
.required(false)
|
||||||
|
.action(ArgAction::SetTrue),
|
||||||
|
)
|
||||||
|
.arg(
|
||||||
|
arg!(-t --text ... "Output text instead of binary")
|
||||||
|
.required(false)
|
||||||
|
.action(ArgAction::SetTrue),
|
||||||
|
)
|
||||||
|
.arg(arg!(-P --parquet <String> "Write the result as a parquet file").required(false))
|
||||||
|
.arg(
|
||||||
|
arg!(-a --head ... "Print the header of the table")
|
||||||
|
.required(false)
|
||||||
|
.action(ArgAction::SetTrue),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn gen_wpq_command() -> Command {
|
||||||
|
Command::new("wpq")
|
||||||
|
.about("Write to a paquet file")
|
||||||
|
.arg(arg!(-d --delimiter <String> "Column delimiter. Assume ,").required(false))
|
||||||
|
.arg(
|
||||||
|
arg!(-t --text ... "Input text instead of binary")
|
||||||
|
.required(false)
|
||||||
|
.action(ArgAction::SetTrue),
|
||||||
|
)
|
||||||
|
.arg(arg!([path] "Path to the new parquet file"))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn gen_print_command() -> Command {
|
||||||
|
Command::new("print")
|
||||||
|
.about("Pretty prints the table")
|
||||||
|
.arg(arg!(-d --delimiter <String> "Column delimiter. Assume ,").required(false))
|
||||||
|
.arg(
|
||||||
|
arg!(-t --text ... "Inputs csv instead of binary")
|
||||||
|
.required(false)
|
||||||
|
.action(ArgAction::SetTrue),
|
||||||
|
)
|
||||||
|
}
|
145
src/handlers.rs
Normal file
145
src/handlers.rs
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
use crate::io;
|
||||||
|
use crate::sql;
|
||||||
|
use crate::schema;
|
||||||
|
use clap::ArgMatches;
|
||||||
|
use polars_lazy::prelude::LazyFrame;
|
||||||
|
|
||||||
|
pub fn handle_csv(matches: &ArgMatches) {
|
||||||
|
let delimiter = match matches.get_one::<String>("delimiter") {
|
||||||
|
Some(delimiter) => delimiter.as_bytes()[0],
|
||||||
|
None => b',',
|
||||||
|
};
|
||||||
|
let mut ldf = if matches.get_flag("stdin") {
|
||||||
|
io::load_csv_from_stdin(delimiter)
|
||||||
|
} else {
|
||||||
|
let path = matches
|
||||||
|
.get_one::<String>("path")
|
||||||
|
.expect("Please, provide a file");
|
||||||
|
io::read_csv(path.to_string(), delimiter)
|
||||||
|
};
|
||||||
|
if let Some(query) = matches.get_one::<String>("query") {
|
||||||
|
ldf = sql::execute(ldf, query);
|
||||||
|
}
|
||||||
|
if matches.get_flag("summary") {
|
||||||
|
let df = ldf.collect().expect("Could not collect");
|
||||||
|
println!("{}", df.describe(None));
|
||||||
|
} else if matches.get_flag("head") {
|
||||||
|
let df = ldf.fetch(5).expect("Could not fetch");
|
||||||
|
println!("{}", df)
|
||||||
|
} else {
|
||||||
|
if matches.get_flag("text") {
|
||||||
|
io::dump_csv_to_stdout(ldf);
|
||||||
|
} else {
|
||||||
|
if let Some(path) = matches.get_one::<String>("parquet") {
|
||||||
|
io::write_parquet(ldf, path.to_string());
|
||||||
|
} else {
|
||||||
|
io::write_ipc(ldf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn handle_sql(matches: &ArgMatches) {
|
||||||
|
let delimiter = match matches.get_one::<String>("delimiter") {
|
||||||
|
Some(delimiter) => delimiter.as_bytes()[0],
|
||||||
|
None => b',',
|
||||||
|
};
|
||||||
|
if let Some(statement) = matches.get_one::<String>("statement") {
|
||||||
|
let ldf = if matches.get_flag("text") {
|
||||||
|
io::load_csv_from_stdin(delimiter)
|
||||||
|
} else {
|
||||||
|
io::read_ipc()
|
||||||
|
};
|
||||||
|
let res = sql::execute(ldf, statement);
|
||||||
|
io::write_ipc(res);
|
||||||
|
} else {
|
||||||
|
io::write_ipc(io::read_ipc());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn handle_print(matches: &ArgMatches) {
|
||||||
|
let delimiter = match matches.get_one::<String>("delimiter") {
|
||||||
|
Some(delimiter) => delimiter.as_bytes()[0],
|
||||||
|
None => b',',
|
||||||
|
};
|
||||||
|
let df = if matches.get_flag("text") {
|
||||||
|
io::load_csv_from_stdin(delimiter)
|
||||||
|
} else {
|
||||||
|
io::read_ipc()
|
||||||
|
};
|
||||||
|
println!("{}", df.collect().expect("Could not collect"));
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn handle_rpq(matches: &ArgMatches) {
|
||||||
|
let mut ldf = LazyFrame::default();
|
||||||
|
if matches.get_flag("stdin") {
|
||||||
|
ldf = io::load_parquet_from_stdin();
|
||||||
|
} else if let Some(path) = matches.get_one::<String>("path") {
|
||||||
|
ldf = io::read_parquet(path.to_string());
|
||||||
|
} else {
|
||||||
|
eprintln!("File not found or not reading from stdin")
|
||||||
|
}
|
||||||
|
if let Some(query) = matches.get_one::<String>("query") {
|
||||||
|
ldf = sql::execute(ldf, query);
|
||||||
|
}
|
||||||
|
if matches.get_flag("summary") {
|
||||||
|
let df = ldf.collect().expect("Could not collect");
|
||||||
|
println!("{}", df.describe(None));
|
||||||
|
} else if matches.get_flag("head") {
|
||||||
|
let df = ldf.fetch(5).expect("Could not fetch");
|
||||||
|
println!("{}", df)
|
||||||
|
} else {
|
||||||
|
if matches.get_flag("text") {
|
||||||
|
io::dump_csv_to_stdout(ldf);
|
||||||
|
} else {
|
||||||
|
if let Some(path) = matches.get_one::<String>("parquet") {
|
||||||
|
io::write_parquet(ldf, path.to_string());
|
||||||
|
} else {
|
||||||
|
io::write_ipc(ldf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn handle_wpq(matches: &ArgMatches) {
|
||||||
|
let delimiter = match matches.get_one::<String>("delimiter") {
|
||||||
|
Some(delimiter) => delimiter.as_bytes()[0],
|
||||||
|
None => b',',
|
||||||
|
};
|
||||||
|
if let Some(path) = matches.get_one::<String>("path") {
|
||||||
|
let ldf = if matches.get_flag("text") {
|
||||||
|
io::load_csv_from_stdin(delimiter)
|
||||||
|
} else {
|
||||||
|
io::read_ipc()
|
||||||
|
};
|
||||||
|
io::write_parquet(ldf, path.to_string());
|
||||||
|
} else {
|
||||||
|
eprintln!("Could now write to parquet");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn handle_schema(matches: &ArgMatches) {
|
||||||
|
let delimiter = match matches.get_one::<String>("delimiter") {
|
||||||
|
Some(delimiter) => delimiter.as_bytes()[0],
|
||||||
|
None => b',',
|
||||||
|
};
|
||||||
|
let ldf = if matches.get_flag("stdin") {
|
||||||
|
io::load_csv_from_stdin(delimiter)
|
||||||
|
} else {
|
||||||
|
io::read_ipc()
|
||||||
|
};
|
||||||
|
|
||||||
|
if matches.get_flag("summary") {
|
||||||
|
schema::print_schema(ldf);
|
||||||
|
} else if matches.get_flag("postgresql") {
|
||||||
|
let name = matches
|
||||||
|
.get_one::<String>("name")
|
||||||
|
.expect("Please provide a table name");
|
||||||
|
let strlen: u32 = match matches.get_one::<String>("strlen") {
|
||||||
|
Some(strlen) => strlen.parse::<u32>().unwrap(),
|
||||||
|
None => 128,
|
||||||
|
};
|
||||||
|
schema::print_create(ldf, name.as_str(), strlen);
|
||||||
|
}
|
||||||
|
}
|
263
src/main.rs
263
src/main.rs
|
@ -1,252 +1,31 @@
|
||||||
|
mod commands;
|
||||||
|
mod handlers;
|
||||||
mod io;
|
mod io;
|
||||||
mod schema;
|
mod schema;
|
||||||
mod sql;
|
mod sql;
|
||||||
use clap::{arg, command, ArgAction, Command};
|
use clap::command;
|
||||||
use polars_lazy::prelude::*;
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let matches = command!()
|
let matches = command!()
|
||||||
.subcommand(
|
.subcommand(commands::gen_csv_command())
|
||||||
Command::new("csv")
|
.subcommand(commands::gen_schema_command())
|
||||||
.about("Read csv, output arrow stream")
|
.subcommand(commands::gen_sql_command())
|
||||||
.arg(arg!([path] "Path to CSV file"))
|
.subcommand(commands::gen_print_command())
|
||||||
.arg(arg!(-d --delimiter <String> "Column delimiter. Assume ,").required(false))
|
.subcommand(commands::gen_rpq_command())
|
||||||
.arg(
|
.subcommand(commands::gen_wpq_command())
|
||||||
arg!(-i --stdin ... "Read from stdin")
|
|
||||||
.required(false)
|
|
||||||
.action(ArgAction::SetTrue),
|
|
||||||
)
|
|
||||||
.arg(arg!(-q --query <String> "Execute query on the file").required(false))
|
|
||||||
.arg(
|
|
||||||
arg!(-s --summary ... "Summarize the data")
|
|
||||||
.required(false)
|
|
||||||
.action(ArgAction::SetTrue),
|
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
arg!(-t --text ... "Output text instead of binary")
|
|
||||||
.required(false)
|
|
||||||
.action(ArgAction::SetTrue),
|
|
||||||
)
|
|
||||||
.arg(arg!(-P --parquet <String> "Write output as a parquet file").required(false))
|
|
||||||
.arg(
|
|
||||||
arg!(-a --head ... "Print the header of the table")
|
|
||||||
.required(false)
|
|
||||||
.action(ArgAction::SetTrue),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.subcommand(
|
|
||||||
Command::new("schema")
|
|
||||||
.about("Several table schema related utilities")
|
|
||||||
.arg(
|
|
||||||
arg!(-i --stdin ... "Read from stdin")
|
|
||||||
.required(false)
|
|
||||||
.action(ArgAction::SetTrue),
|
|
||||||
)
|
|
||||||
.arg(arg!(-d --delimiter <String> "Column delimiter. Assume ,").required(false))
|
|
||||||
.arg(arg!(-n --name <String> "Table name").required(false))
|
|
||||||
.arg(arg!(-l --strlen <String> "Default length for string columns").required(false))
|
|
||||||
.arg(
|
|
||||||
arg!(-s --summary ... "Summarize the schema")
|
|
||||||
.required(false)
|
|
||||||
.action(ArgAction::SetTrue),
|
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
arg!(-p --postgresql ... "Create a postgresql table with schema")
|
|
||||||
.required(false)
|
|
||||||
.action(ArgAction::SetTrue),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.subcommand(
|
|
||||||
Command::new("sql")
|
|
||||||
.about("Runs a sql statement on the file")
|
|
||||||
.arg(arg!(-d --delimiter <String> "Column delimiter. Assume ,").required(false))
|
|
||||||
.arg(arg!([statement] "SQL statement"))
|
|
||||||
.arg(
|
|
||||||
arg!(-t --text ... "Input text instead of binary")
|
|
||||||
.required(false)
|
|
||||||
.action(ArgAction::SetTrue),
|
|
||||||
)
|
|
||||||
.arg(arg!(-d --delimiter <String> "Column delimiter").required(false)),
|
|
||||||
)
|
|
||||||
.subcommand(
|
|
||||||
Command::new("print")
|
|
||||||
.about("Pretty prints the table")
|
|
||||||
.arg(arg!(-d --delimiter <String> "Column delimiter. Assume ,").required(false))
|
|
||||||
.arg(
|
|
||||||
arg!(-t --text ... "Inputs csv instead of binary")
|
|
||||||
.required(false)
|
|
||||||
.action(ArgAction::SetTrue),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.subcommand(
|
|
||||||
Command::new("rpq")
|
|
||||||
.about("Read parquet file")
|
|
||||||
.arg(arg!([path] "Path to the parquet file"))
|
|
||||||
.arg(arg!(-q --query <String> "Execute query on the file").required(false))
|
|
||||||
.arg(
|
|
||||||
arg!(-s --summary ... "Summarize the data")
|
|
||||||
.required(false)
|
|
||||||
.action(ArgAction::SetTrue),
|
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
arg!(-i --stdin ... "Read from stdin instead than from a file")
|
|
||||||
.required(false)
|
|
||||||
.action(ArgAction::SetTrue),
|
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
arg!(-t --text ... "Output text instead of binary")
|
|
||||||
.required(false)
|
|
||||||
.action(ArgAction::SetTrue),
|
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
arg!(-P --parquet <String> "Write the result as a parquet file")
|
|
||||||
.required(false),
|
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
arg!(-a --head ... "Print the header of the table")
|
|
||||||
.required(false)
|
|
||||||
.action(ArgAction::SetTrue),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.subcommand(
|
|
||||||
Command::new("wpq")
|
|
||||||
.about("Write to a paquet file")
|
|
||||||
.arg(arg!(-d --delimiter <String> "Column delimiter. Assume ,").required(false))
|
|
||||||
.arg(
|
|
||||||
arg!(-t --text ... "Input text instead of binary")
|
|
||||||
.required(false)
|
|
||||||
.action(ArgAction::SetTrue),
|
|
||||||
)
|
|
||||||
.arg(arg!([path] "Path to the new parquet file")),
|
|
||||||
)
|
|
||||||
.get_matches();
|
.get_matches();
|
||||||
if let Some(_matches) = matches.subcommand_matches("csv") {
|
if let Some(sub_matches) = matches.subcommand_matches("csv") {
|
||||||
let delimiter = match _matches.get_one::<String>("delimiter") {
|
handlers::handle_csv(sub_matches);
|
||||||
Some(delimiter) => delimiter.as_bytes()[0],
|
} else if let Some(sub_matches) = matches.subcommand_matches("sql") {
|
||||||
None => b',',
|
handlers::handle_sql(sub_matches);
|
||||||
};
|
} else if let Some(sub_matches) = matches.subcommand_matches("print") {
|
||||||
let mut ldf = if _matches.get_flag("stdin") {
|
handlers::handle_print(sub_matches);
|
||||||
io::load_csv_from_stdin(delimiter)
|
} else if let Some(sub_matches) = matches.subcommand_matches("rpq") {
|
||||||
} else {
|
handlers::handle_rpq(sub_matches);
|
||||||
let path = _matches
|
} else if let Some(sub_matches) = matches.subcommand_matches("wpq") {
|
||||||
.get_one::<String>("path")
|
handlers::handle_wpq(sub_matches);
|
||||||
.expect("Please, provide a file");
|
} else if let Some(sub_matches) = matches.subcommand_matches("schema") {
|
||||||
io::read_csv(path.to_string(), delimiter)
|
handlers::handle_schema(sub_matches);
|
||||||
};
|
|
||||||
if let Some(query) = _matches.get_one::<String>("query") {
|
|
||||||
ldf = sql::execute(ldf, query);
|
|
||||||
}
|
|
||||||
if _matches.get_flag("summary") {
|
|
||||||
let df = ldf.collect().expect("Could not collect");
|
|
||||||
println!("{}", df.describe(None));
|
|
||||||
} else if _matches.get_flag("head") {
|
|
||||||
let df = ldf.fetch(5).expect("Could not fetch");
|
|
||||||
println!("{}", df)
|
|
||||||
} else {
|
|
||||||
if _matches.get_flag("text") {
|
|
||||||
io::dump_csv_to_stdout(ldf);
|
|
||||||
} else {
|
|
||||||
if let Some(path) = _matches.get_one::<String>("parquet") {
|
|
||||||
io::write_parquet(ldf, path.to_string());
|
|
||||||
} else {
|
|
||||||
io::write_ipc(ldf);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if let Some(_matches) = matches.subcommand_matches("sql") {
|
|
||||||
let delimiter = match _matches.get_one::<String>("delimiter") {
|
|
||||||
Some(delimiter) => delimiter.as_bytes()[0],
|
|
||||||
None => b',',
|
|
||||||
};
|
|
||||||
if let Some(statement) = _matches.get_one::<String>("statement") {
|
|
||||||
let ldf = if _matches.get_flag("text") {
|
|
||||||
io::load_csv_from_stdin(delimiter)
|
|
||||||
} else {
|
|
||||||
io::read_ipc()
|
|
||||||
};
|
|
||||||
let res = sql::execute(ldf, statement);
|
|
||||||
io::write_ipc(res);
|
|
||||||
} else {
|
|
||||||
io::write_ipc(io::read_ipc());
|
|
||||||
}
|
|
||||||
} else if let Some(_matches) = matches.subcommand_matches("print") {
|
|
||||||
let delimiter = match _matches.get_one::<String>("delimiter") {
|
|
||||||
Some(delimiter) => delimiter.as_bytes()[0],
|
|
||||||
None => b',',
|
|
||||||
};
|
|
||||||
let df = if _matches.get_flag("text") {
|
|
||||||
io::load_csv_from_stdin(delimiter)
|
|
||||||
} else {
|
|
||||||
io::read_ipc()
|
|
||||||
};
|
|
||||||
println!("{}", df.collect().expect("Could not collect"));
|
|
||||||
} else if let Some(_matches) = matches.subcommand_matches("rpq") {
|
|
||||||
let mut ldf = LazyFrame::default();
|
|
||||||
if _matches.get_flag("stdin") {
|
|
||||||
ldf = io::load_parquet_from_stdin();
|
|
||||||
} else if let Some(path) = _matches.get_one::<String>("path") {
|
|
||||||
ldf = io::read_parquet(path.to_string());
|
|
||||||
} else {
|
|
||||||
eprintln!("File not found or not reading from stdin")
|
|
||||||
}
|
|
||||||
if let Some(query) = _matches.get_one::<String>("query") {
|
|
||||||
ldf = sql::execute(ldf, query);
|
|
||||||
}
|
|
||||||
if _matches.get_flag("summary") {
|
|
||||||
let df = ldf.collect().expect("Could not collect");
|
|
||||||
println!("{}", df.describe(None));
|
|
||||||
} else if _matches.get_flag("head") {
|
|
||||||
let df = ldf.fetch(5).expect("Could not fetch");
|
|
||||||
println!("{}", df)
|
|
||||||
} else {
|
|
||||||
if _matches.get_flag("text") {
|
|
||||||
io::dump_csv_to_stdout(ldf);
|
|
||||||
} else {
|
|
||||||
if let Some(path) = _matches.get_one::<String>("parquet") {
|
|
||||||
io::write_parquet(ldf, path.to_string());
|
|
||||||
} else {
|
|
||||||
io::write_ipc(ldf);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if let Some(_matches) = matches.subcommand_matches("wpq") {
|
|
||||||
let delimiter = match _matches.get_one::<String>("delimiter") {
|
|
||||||
Some(delimiter) => delimiter.as_bytes()[0],
|
|
||||||
None => b',',
|
|
||||||
};
|
|
||||||
if let Some(path) = _matches.get_one::<String>("path") {
|
|
||||||
let ldf = if _matches.get_flag("text") {
|
|
||||||
io::load_csv_from_stdin(delimiter)
|
|
||||||
} else {
|
|
||||||
io::read_ipc()
|
|
||||||
};
|
|
||||||
io::write_parquet(ldf, path.to_string());
|
|
||||||
} else {
|
|
||||||
eprintln!("Could now write to parquet");
|
|
||||||
}
|
|
||||||
} else if let Some(_matches) = matches.subcommand_matches("schema") {
|
|
||||||
let delimiter = match _matches.get_one::<String>("delimiter") {
|
|
||||||
Some(delimiter) => delimiter.as_bytes()[0],
|
|
||||||
None => b',',
|
|
||||||
};
|
|
||||||
let ldf = if _matches.get_flag("stdin") {
|
|
||||||
io::load_csv_from_stdin(delimiter)
|
|
||||||
} else {
|
|
||||||
io::read_ipc()
|
|
||||||
};
|
|
||||||
|
|
||||||
if _matches.get_flag("summary") {
|
|
||||||
schema::print_schema(ldf);
|
|
||||||
} else if _matches.get_flag("postgresql") {
|
|
||||||
let name = _matches
|
|
||||||
.get_one::<String>("name")
|
|
||||||
.expect("Please provide a table name");
|
|
||||||
let strlen: u32 = match _matches.get_one::<String>("strlen") {
|
|
||||||
Some(strlen) => strlen.parse::<u32>().unwrap(),
|
|
||||||
None => 128,
|
|
||||||
};
|
|
||||||
schema::print_create(ldf, name.as_str(), strlen);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
println!("No command provided. Please execute dr --help")
|
println!("No command provided. Please execute dr --help")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue