csvzall 0.4.0
CSV command-line tool and emerging C++ library
Loading...
Searching...
No Matches
exporter.hpp
Go to the documentation of this file.
1#pragma once
2
3#ifdef CSVZALL_HAVE_POSTGRESQL
4
6#include "row_loader.hpp"
8
9#include <csv.hpp>
10
11#include <cstddef>
12#include <cstdint>
13#include <functional>
14#include <string>
15#include <vector>
16
17namespace csvzall::postgres {
18
20
22 std::function<void(const std::string&)> error;
23 std::function<void(const std::string&)> verbose;
24 std::function<void(const std::string&)> info;
25 std::function<void(const std::string&, std::uint64_t)> progress_start;
26 std::function<void(std::uint64_t)> progress_update;
27 std::function<void()> progress_finish;
28};
29
31 std::size_t copy_batch_rows = 10000;
32 std::size_t parallel_copy_workers = 1;
33};
34
35struct CopyResult {
36 std::uint64_t rows_loaded = 0;
37 std::uint64_t rows_skipped_type_mismatch = 0;
38};
39
41 std::vector<InferredColumn> columns;
42 std::size_t observed_rows = 0;
43};
44
46 bool success = true;
47 int return_code = 0;
48 std::uint64_t rows_loaded = 0;
49 std::uint64_t rows_skipped_type_mismatch = 0;
50 std::size_t observed_rows = 0;
51};
52
53IfExistsMode ParseIfExistsMode(const std::string& mode_str);
54
55InferredSchema InferSchema(csv::CSVReader& reader,
56 const std::vector<std::string>& headers,
57 const LogCallbacks& logger);
58
59void DumpInferredSchema(const LogCallbacks& logger,
60 const std::string& table_name,
61 const std::vector<InferredColumn>& inferred_columns,
62 std::size_t observed_rows);
63
64void CopyRowsWithPipeline(csv::CSVReader& reader,
66 const LogCallbacks& logger,
67 std::uint64_t total_rows,
68 std::size_t chunk_size);
69
70CopyResult CopyRowsWithParallelWorkers(csv::CSVReader& reader,
72 const std::string& table_name,
73 const std::vector<InferredColumn>& columns,
74 const LogCallbacks& logger,
75 std::uint64_t total_rows,
76 std::size_t chunk_size,
77 std::size_t worker_count);
78
79ExportResult ExportCsvToPostgres(csv::CSVReader& reader,
80 const std::vector<std::string>& headers,
81 const std::function<int()>& reset_reader,
83 const std::string& table_name,
85 const LoadOptions& options,
86 const LogCallbacks& logger);
87
88} // namespace csvzall::postgres
89
90namespace csvzall::pipeline {
91namespace postgres = ::csvzall::postgres;
92}
93
94#endif // CSVZALL_HAVE_POSTGRESQL
Definition row_loader.hpp:18
std::vector< ColumnMapping > columns
Definition json_extract.cpp:353
std::vector< JsonValue > array
Definition json_extract.cpp:33
Definition chart_spec.hpp:100
Definition commands.hpp:16
CopyResult CopyRowsWithParallelWorkers(csv::CSVReader &reader, const ConnectionConfig &pg_config, const std::string &table_name, const std::vector< InferredColumn > &columns, const LogCallbacks &logger, const std::uint64_t total_rows, const std::size_t chunk_size, const std::size_t worker_count)
Definition exporter.cpp:307
IfExistsMode
Definition exporter.hpp:19
ExportResult ExportCsvToPostgres(csv::CSVReader &reader, const std::vector< std::string > &headers, const std::function< int()> &reset_reader, const ConnectionConfig &pg_config, const std::string &table_name, const IfExistsMode if_exists_mode, const LoadOptions &options, const LogCallbacks &logger)
Definition exporter.cpp:472
InferredSchema InferSchema(csv::CSVReader &reader, const std::vector< std::string > &headers, const LogCallbacks &logger)
Definition exporter.cpp:151
void DumpInferredSchema(const LogCallbacks &logger, const std::string &table_name, const std::vector< InferredColumn > &inferred_columns, const std::size_t observed_rows)
Definition exporter.cpp:130
IfExistsMode ParseIfExistsMode(const std::string &mode_str)
Definition exporter.cpp:123
void CopyRowsWithPipeline(csv::CSVReader &reader, RowLoader &loader, const LogCallbacks &logger, const std::uint64_t total_rows, const std::size_t chunk_size)
Definition exporter.cpp:204
Definition postgres_connection.hpp:12
Definition exporter.hpp:35
std::uint64_t rows_loaded
Definition exporter.hpp:36
std::uint64_t rows_skipped_type_mismatch
Definition exporter.hpp:37
Definition exporter.hpp:45
std::size_t observed_rows
Definition exporter.hpp:50
int return_code
Definition exporter.hpp:47
std::uint64_t rows_loaded
Definition exporter.hpp:48
bool success
Definition exporter.hpp:46
std::uint64_t rows_skipped_type_mismatch
Definition exporter.hpp:49
Definition exporter.hpp:40
std::vector< InferredColumn > columns
Definition exporter.hpp:41
std::size_t observed_rows
Definition exporter.hpp:42
Definition exporter.hpp:30
std::size_t parallel_copy_workers
Definition exporter.hpp:32
std::size_t copy_batch_rows
Definition exporter.hpp:31
Definition exporter.hpp:21
std::function< void(const std::string &)> info
Definition exporter.hpp:24
std::function< void(const std::string &)> verbose
Definition exporter.hpp:23
std::function< void(std::uint64_t)> progress_update
Definition exporter.hpp:26
std::function< void(const std::string &, std::uint64_t)> progress_start
Definition exporter.hpp:25
std::function< void()> progress_finish
Definition exporter.hpp:27
std::function< void(const std::string &)> error
Definition exporter.hpp:22