bool load_data_from_file(rocksdb::DB* db, std::string path){ std::cout << "adding data from disk" << std::endl; std::size_t index = 0; std::ifstream stream; rocksdb::Status status; try { stream.open(path); if(!stream.is_open()){ std::cout << "Unable to open stream!"; return false; } auto start = cclock::now(); std::istream_iterator<std::string> stream_it(stream); for(;stream_it != std::istream_iterator<std::string>(); ++stream_it ){ auto key = std::to_string(index++); status = db->Put(rocksdb::WriteOptions(), key, *stream_it); if(!status.ok() ){ throw std::logic_error("boom"); } if (index % 10000 == 0){ std::cout << index << std::endl; } } auto duration = std::chrono::duration_cast<std::chrono::seconds>(cclock::now() - start); std::cout << "loading of data form file " << duration.count() << std::endl; } catch (std::exception const& e) { std::cout <<e.what(); return false; } return true; }
inline std::ostream& operator<<(std::ostream& os, const std::array<T, N>& v) { return stream_it(os, v); }
inline std::ostream& operator<<(std::ostream& os, const std::deque<T>& v) { return stream_it(os, v); }