blob: bd87d348d9144e810ff582afefcff520cadc6b68 [file] [log] [blame]
#!/usr/bin/env vpython
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import argparse
import contextlib
import csv
import os
import sqlite3
import sys
DEFAULT_DATABASE_PATH = os.path.abspath(os.path.join(
os.path.dirname(__file__), '_cached_data', 'soundwave', 'soundwave.db'))
@contextlib.contextmanager
def OutputStream(filename):
if filename is None or filename == '-':
yield sys.stdout
else:
with open(filename, 'w') as f:
yield f
def EncodeUnicode(v):
return v.encode('utf-8') if isinstance(v, unicode) else v
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
'table', help='Name of a table to export')
parser.add_argument(
'--database-file', default=DEFAULT_DATABASE_PATH,
help='File path for database where to store data.')
parser.add_argument(
'--output', '-o',
help='Where to write the csv output, defaults to stdout.')
args = parser.parse_args()
con = sqlite3.connect(args.database_file)
try:
cur = con.execute('SELECT * FROM %s' % args.table)
header = [c[0] for c in cur.description]
with OutputStream(args.output) as out:
writer = csv.writer(out)
writer.writerow(header)
for row in cur:
writer.writerow([EncodeUnicode(v) for v in row])
finally:
con.close()
if __name__ == '__main__':
sys.exit(main())