33 lines
		
	
	
	
		
			962 B
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			962 B
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #! /usr/bin/env python3
 | |
| 
 | |
| import argparse
 | |
| 
 | |
| from xmet.db    import Database
 | |
| from xmet.storm import StormEvent
 | |
| 
 | |
| parser = argparse.ArgumentParser(
 | |
|     description = 'Ingest events from StormEvent_details_*.csv.gz files'
 | |
| )
 | |
| 
 | |
| parser.add_argument('--quiet',   action='store_true', help='Suppress output')
 | |
| parser.add_argument('--dry-run', action='store_true', help='Do not actually ingest events')
 | |
| parser.add_argument('db',                             help='XMET SQLite3 database')
 | |
| parser.add_argument('csv-event-details', nargs='+',   help='Compressed storm event details CSV file')
 | |
| 
 | |
| args = parser.parse_args()
 | |
| 
 | |
| db = Database.connect(args.db)
 | |
| 
 | |
| if not args.dry_run:
 | |
|     db.execute('begin transaction')
 | |
| 
 | |
| for path in getattr(args, 'csv-event-details'):
 | |
|     for event in StormEvent.each_from_csv_file(path):
 | |
|         if not args.dry_run:
 | |
|             db.add(event)
 | |
| 
 | |
|     if not args.quiet:
 | |
|         print(f"Finished ingesting file {path}")
 | |
| 
 | |
| if not args.dry_run:
 | |
|     db.commit()
 |