Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • C csvkit
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 61
    • Issues 61
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 4
    • Merge requests 4
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • wireservice
  • csvkit
  • Merge requests
  • !259

Add new utility: sql2csv

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Administrator requested to merge github/fork/jeroenjanssens/master into master Mar 18, 2014
  • Overview 1
  • Commits 4
  • Pipelines 0
  • Changes 4

Created by: jeroenjanssens

This pull request adds a new utility to csvkit: sql2csv, which is a generic command-line tool that can connect a database, execute a query, and output csv. It might be considered as the complement of csvsql. The name sql2csv has been chosen in order to be consistent with in2csv. It borrows existing code from csvsql and in2csv, and introduces no additional dependencies. Appropriate tests are included.

SQL queries can specified via a FILE, STDIN, or --query. The latter, if specified, takes precedence. The --no-header-row and --linenumbers options are supported. Example usage:

$ echo 'select * from foo' | sql2csv --db 'sqlite:///foo.db'
a,b,c
1,2,3

The default database connection is sqlite://, which allows you execute a query that doesn't require a table:

$ sql2csv --query 'select 4+5 as answer'
answer
9

Interesting side-effect: by combining sql2csv with csvsql, you can effectively execute SQL queries on CSV files:

#!/usr/bin/env bash
TMPDB="$(mktemp)"
csvsql --db "sqlite:///${TMPDB}" --table 'csv' --insert
sql2csv --db "sqlite:///${TMPDB}" --query "$1"
rm $TMPDB
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: github/fork/jeroenjanssens/master