Migrate aether post from 01318779088

This commit is contained in:
Jeff Epler 2019-07-06 17:37:39 -05:00
parent 95ec369fae
commit 09c1eaf2e8

View file

@ -0,0 +1,204 @@
---
layout: default
title: "csql: perform sql queries on csv data"
redirect_from:
- /01318779088
---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>csql: perform sql queries on csv data</title>
<link rel="stylesheet" href="https://media.unpythonic.net/css/bootstrap.min.css">
<style>
#mask {
position: absolute;
left: 0;
top: 0;
background-color: #000;
opacity: 0.7;
display: none;
}
#loading {
position: fixed;
left: 50%;
top: 50%;
width: 58px;
height: 60px;
background-color: black;
background-image: url('https://media.unpythonic.net/img/loading.gif');
opacity: 0.9;
z-index: 20;
display: none;
border-radius: 4px;
}
#bigimg {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: none;
}
#maskouter {
height: 100%;
display: table;
margin: 0 auto;
}
#maskinner {
vertical-align: middle;
display: table-cell;
}
#imgleft, #imgright {
cursor: pointer;
position: fixed;
top: 50%;
width: 64px;
height: 64px;
border-radius: 4px;
background-color: black;
z-index: 22;
opacity: 0.7;
}
#imgleft {
left: 0;
background-image: url('https://media.unpythonic.net/img/prevbtn.png');
}
#imgleft.disabled, #imgright.disabled { display: none; }
#imgright {
right: 0;
background-image: url('https://media.unpythonic.net/img/nextbtn.png');
}
#imgdesc {
position: fixed;
left: 64px;
bottom: 0;
background-color: #333;
width: 100%;
padding-top: 1em;
padding-bottom: 1em;
padding-left: 2em;
border: 1px solid #555;
border-bottom: 0;
}
#imgdesc .filename {
color: #fff;
font-weight: bold;
}
#imgdesc .description {
color: #fff;
padding-left: 1em;
}
#mask { z-index: 10990; }
#loading { z-index: 10991; }
#bigimg { z-index: 10992; }
</style>
<script type="text/javascript" src="https://media.unpythonic.net/js/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="https://media.unpythonic.net/js/bootstrap-dropdown.js"></script>
<script type="text/javascript" src="https://media.unpythonic.net/js/jquery.mousewheel.js"></script>
<script type="text/javascript" src="https://media.unpythonic.net/js/jquery.ba-hashchange.min.js"></script>
<script type="text/javascript" src="https://media.unpythonic.net/js/jquery.mobile.custom.min.js"></script>
<script type="text/javascript" src="https://media.unpythonic.net/js/gallery.js"></script>
<style><!--
div.floatimageleft, div.floatimageright {
border: 1px solid black;
padding: 2px;
margin: 1em;
}
div.floatimageleft { clear: left; float: left; }
div.floatimageright { clear: right; float: right; }
div.floatimageleft img, div.floatimageright img { border: 0px; }
div.floatimageleft img.zoom, div.floatimageright img.zoom {
padding: 4px;
}
--></style>
<style><!--
div.albumouter {
margin-right: 1ex;
margin-top: 1ex;
vertical-align: baseline;
display: -moz-inline-box;
display: inline-block;
text-decoration: none !important;
}
.album { display: block; clear: both; }
.album a:link, .album a:hover, .album a:visited
{ text-decoration: none; }
.album a:hover { color: red; }
.albumimage {
display: block;
padding-left: 2px; padding-right: 2px;
padding-top: 3px; padding-bottom: 3px;
background: #ececec;
}
.albumimage img.zoom {
margin-left: 0px; margin-right: 0px;
padding-top: 4px; padding-right: 4px; }
.albumimage img { border: 0px;
display: block; margin-left: auto; margin-right:auto
}
--></style>
<!-- no summary found -->
</head>
<body>
The websites I operate are flat-file based, so when I want to store
data it's easiest to write it in csv format. But it's not particularly easy
to make queries on this data without additional software.
<p>I'd rather not fire up Open Office or try to figure out how to make awk
parse a quoted excel-format file, so I wrote 'csql', which reads a csv
file into an in-memory sql database, performs a query, and then writes
the result also in csv format.
<p>A short example:
<p>rsvp.csv:
<blockquote><pre>
Buffy Summers,false,0
Xander Harris,true,2
Willow Rosenberg,true,1
</pre></blockquote>
<p>rsvp.cols:
<blockquote><pre>
name text
attend boolean
count integer
</pre></blockquote>
<p>Performing queries:
<blockquote><pre>
$ csql rsvp.csv 'select sum(count) from t where attend="true"'
3
$ csql rsvp.csv 'select name from t where attend="true"'
Xander Harris
Willow Rosenberg
</pre></blockquote>
<p><p><b>Files currently attached to this page:</b>
<table cellpadding=5 style="width:auto!important; clear:none!important"><col><col style="text-align: right"><tr bgcolor=#eeeeee><td><a href="https://media.unpythonic.net/emergent-files/01318779088/csql">csql</a></td><td>3.4kB</td></tr></table><p>
<p><br><br><font size=-2>Entry first conceived on 16 October 2011, 15:31 UTC, last modified on 15 January 2012, 3:46 UTC</font>
</body>
</html>