使用C++17实现将SQLite3数据导出到CSV文件
当数据量达到百万条时,你需要考虑分批次写入来维持性能问题
#include <iostream>
#include <sqlite3.h>
#include <fstream>
int main() {
sqlite3* db;
int rc = sqlite3_open("your_database.db", &db);
if (rc) {
std::cerr << "Error opening database: " << sqlite3_errmsg(db) << std::endl;
return 1;
}
std::ofstream outputFile("output_file.csv");
if (!outputFile.is_open()) {
std::cerr << "Failed to open output file." << std::endl;
return 1;
}
const char* sql = "SELECT * FROM your_table;";
sqlite3_stmt* stmt;
rc = sqlite3_prepare_v2(db, sql, -1, &stmt, nullptr);
if (rc != SQLITE_OK) {
std::cerr << "Error preparing statement: " << sqlite3_errmsg(db) << std::endl;
return 1;
}
while ((rc = sqlite3_step(stmt)) == SQLITE_ROW) {
for (int i = 0; i < sqlite3_column_count(stmt); ++i) {
outputFile << sqlite3_column_text(stmt, i);
if (i < sqlite3_column_count(stmt) - 1) {
outputFile << ",";
}
}
outputFile << "\n";
}
sqlite3_finalize(stmt);
sqlite3_close(db);
outputFile.close();
return 0;
}