doc: csv: expand description part, include examples
[ci skip]
This commit is contained in:
		
							parent
							
								
									b312d51b8f
								
							
						
					
					
						commit
						f5a39f7bc4
					
				| @ -17,16 +17,64 @@ CSV - how hledger reads CSV data, and the CSV rules file format | ||||
| }}) | ||||
| 
 | ||||
| hledger can read | ||||
| [CSV](http://en.wikipedia.org/wiki/Comma-separated_values) files, | ||||
| converting each CSV record into a journal entry (transaction), | ||||
| if you provide some conversion hints in a "rules file". | ||||
| This file should be named like the CSV file with an additional `.rules` suffix (eg: `mybank.csv.rules`); | ||||
| or, you can specify the file with `--rules-file PATH`. | ||||
| hledger will create it if necessary, with some default rules which you'll need to adjust. | ||||
| At minimum, the rules file must specify the `date` and `amount` fields. | ||||
| For an example, see [Cookbook: convert CSV files](csv-import.html). | ||||
| [CSV](http://en.wikipedia.org/wiki/Comma-separated_values) | ||||
| (comma-separated value) files as if they were journal files, | ||||
| automatically converting each CSV record into a transaction.  (To | ||||
| learn about *writing* CSV, see [CSV output](hledger.html#csv-output).) | ||||
| 
 | ||||
| To learn about *exporting* CSV, see [CSV output](hledger.html#csv-output). | ||||
| Converting CSV to transactions requires some special conversion rules. | ||||
| These do several things: | ||||
| 
 | ||||
| - they describe the layout and format of the CSV data | ||||
| - they can customize the generated journal entries using a simple templating language | ||||
| - they can add refinements based on patterns in the CSV data, eg categorizing transactions with more detailed account names. | ||||
| 
 | ||||
| When reading a CSV file named `FILE.csv`, hledger looks for a | ||||
| conversion rules file named `FILE.csv.rules` in the same directory. | ||||
| You can override this with the `--rules-file` option. | ||||
| If the rules file does not exist, hledger will auto-create one with | ||||
| some example rules, which you'll need to adjust. | ||||
| 
 | ||||
| At minimum, the rules file must identify the `date` and `amount` fields.  | ||||
| It may also be necessary to specify the date format, and the number of header lines to skip. Eg: | ||||
| ``` | ||||
| fields date, _, _, amount | ||||
| date-format  %d/%m/%Y | ||||
| skip 1 | ||||
| ``` | ||||
| 
 | ||||
| A more complete example: | ||||
| ``` | ||||
| # hledger CSV rules for amazon.com order history | ||||
| 
 | ||||
| # sample: | ||||
| # "Date","Type","To/From","Name","Status","Amount","Fees","Transaction ID" | ||||
| # "Jul 29, 2012","Payment","To","Adapteva, Inc.","Completed","$25.00","$0.00","17LA58JSK6PRD4HDGLNJQPI1PB9N8DKPVHL" | ||||
| 
 | ||||
| # skip one header line | ||||
| skip 1 | ||||
| 
 | ||||
| # name the csv fields (and assign the transaction's date, amount and code) | ||||
| fields date, _, toorfrom, name, amzstatus, amount, fees, code | ||||
| 
 | ||||
| # how to parse the date | ||||
| date-format %b %-d, %Y | ||||
| 
 | ||||
| # combine two fields to make the description | ||||
| description %toorfrom %name | ||||
| 
 | ||||
| # save these fields as tags | ||||
| comment     status:%amzstatus, fees:%fees | ||||
| 
 | ||||
| # set the base account for all transactions | ||||
| account1    assets:amazon | ||||
| 
 | ||||
| # flip the sign on the amount | ||||
| amount      -%amount | ||||
| 
 | ||||
| ``` | ||||
| 
 | ||||
| For more examples, see [Convert CSV files](csv-import.html). | ||||
| 
 | ||||
| 
 | ||||
| # CSV RULES | ||||
| @ -208,4 +256,4 @@ it will be [asserted](/journal.html#balance-assertions) as the balance after the | ||||
| 
 | ||||
| You can read multiple CSV files at once using multiple `-f` arguments on the command line, | ||||
| and hledger will look for a correspondingly-named rules file for each. | ||||
| Note if you use the `--rules-file` option, this one rules file will be used for all the CSV files being read.  | ||||
| Note if you use the `--rules-file` option, this one rules file will be used for all the CSV files being read.  | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user