170 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| hledger_csv(5)               hledger User Manuals               hledger_csv(5)
 | |
| 
 | |
| 
 | |
| 
 | |
| NAME
 | |
|        CSV - how hledger reads CSV data, and the CSV rules file format
 | |
| 
 | |
| DESCRIPTION
 | |
|        hledger  can  read CSV 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 How to
 | |
|        read CSV files.
 | |
| 
 | |
|        To learn about exporting CSV, see CSV output.
 | |
| 
 | |
| CSV RULES
 | |
|        The following six kinds of rule can appear in the rules  file,  in  any
 | |
|        order.  Blank lines and lines beginning with # or ; are ignored.
 | |
| 
 | |
|    skip
 | |
|        skipN
 | |
| 
 | |
|        Skip  this  number  of  CSV records at the beginning.  You'll need this
 | |
|        whenever your CSV data contains header lines.  Eg:
 | |
| 
 | |
|               # ignore the first CSV line
 | |
|               skip 1
 | |
| 
 | |
|    date-format
 | |
|        date-formatDATEFMT
 | |
| 
 | |
|        When your CSV  date  fields  are  not  formatted  like  YYYY/MM/DD  (or
 | |
|        YYYY-MM-DD  or YYYY.MM.DD), you'll need to specify the format.  DATEFMT
 | |
|        is a strptime-like date parsing pattern,  which  must  parse  the  date
 | |
|        field values completely.  Examples:
 | |
| 
 | |
|               # for dates like "6/11/2013":
 | |
|               date-format %-d/%-m/%Y
 | |
| 
 | |
|               # for dates like "11/06/2013":
 | |
|               date-format %m/%d/%Y
 | |
| 
 | |
|               # for dates like "2013-Nov-06":
 | |
|               date-format %Y-%h-%d
 | |
| 
 | |
|               # for dates like "11/6/2013 11:32 PM":
 | |
|               date-format %-m/%-d/%Y %l:%M %p
 | |
| 
 | |
|    field list
 | |
|        fieldsFIELDNAME1, FIELDNAME2...
 | |
| 
 | |
|        This  (a)  names the CSV fields, in order (names may not contain white-
 | |
|        space; uninteresting names may be left blank), and (b) assigns them  to
 | |
|        journal  entry  fields  if  you  use any of these standard field names:
 | |
|        date, date2, status, code, description,  comment,  account1,  account2,
 | |
|        amount, amount-in, amount-out, currency.  Eg:
 | |
| 
 | |
|               # use the 1st, 2nd and 4th CSV fields as the entry's date, description and amount,
 | |
|               # and give the 7th and 8th fields meaningful names for later reference:
 | |
|               #
 | |
|               # CSV field:
 | |
|               #      1     2            3 4       5 6 7          8
 | |
|               # entry field:
 | |
|               fields date, description, , amount, , , somefield, anotherfield
 | |
| 
 | |
|    field assignment
 | |
|        ENTRYFIELDNAME FIELDVALUE
 | |
| 
 | |
|        This  sets  a  journal entry field (one of the standard names above) to
 | |
|        the given text value, which can include CSV field  values  interpolated
 | |
|        by name (%CSVFIELDNAME) or 1-based position (%N).
 | |
|         Eg:
 | |
| 
 | |
|               # set the amount to the 4th CSV field with "USD " prepended
 | |
|               amount USD %4
 | |
| 
 | |
|               # combine three fields to make a comment (containing two tags)
 | |
|               comment note: %somefield - %anotherfield, date: %1
 | |
| 
 | |
|        Field  assignments  can  be  used  instead of or in addition to a field
 | |
|        list.
 | |
| 
 | |
|    conditional block
 | |
|        if PATTERN
 | |
|            FIELDASSIGNMENTS...
 | |
| 
 | |
|        if
 | |
|        PATTERN
 | |
|        PATTERN...
 | |
|            FIELDASSIGNMENTS...
 | |
| 
 | |
|        This applies one or more field assignments, only to those  CSV  records
 | |
|        matched by one of the PATTERNs.  The patterns are case-insensitive reg-
 | |
|        ular expressions which match anywhere within the whole CSV record (it's
 | |
|        not  yet  possible  to  match within a specific field).  When there are
 | |
|        multiple patterns they can be written on  separate  lines,  unindented.
 | |
|        The  field  assignments  are on separate lines indented by at least one
 | |
|        space.  Examples:
 | |
| 
 | |
|               # if the CSV record contains "groceries", set account2 to "expenses:groceries"
 | |
|               if groceries
 | |
|                account2 expenses:groceries
 | |
| 
 | |
|               # if the CSV record contains any of these patterns, set account2 and comment as shown
 | |
|               if
 | |
|               monthly service fee
 | |
|               atm transaction fee
 | |
|               banking thru software
 | |
|                account2 expenses:business:banking
 | |
|                comment  XXX deductible ? check it
 | |
| 
 | |
|    include
 | |
|        includeRULESFILE
 | |
| 
 | |
|        Include another rules file at this point.  RULESFILE is either an abso-
 | |
|        lute file path or a path relative to the current file's directory.  Eg:
 | |
| 
 | |
|               # rules reused with several CSV files
 | |
|               include common.rules
 | |
| 
 | |
| TIPS
 | |
|        Each generated journal entry will have two postings,  to  account1  and
 | |
|        account2 respectively.  Currently it's not possible to generate entries
 | |
|        with more than two postings.
 | |
| 
 | |
|        If the CSV has debit/credit amounts in separate fields, assign  to  the
 | |
|        amount-in and amount-out pseudo fields instead of amount.
 | |
| 
 | |
|        If  the  CSV  has  the currency in a separate field, assign that to the
 | |
|        currency pseudo field which will  be  automatically  prepended  to  the
 | |
|        amount.  (Or you can do the same thing with a field assignment.)
 | |
| 
 | |
|        If  an  amount  value is parenthesised, it will be de-parenthesised and
 | |
|        sign-flipped automatically.
 | |
| 
 | |
|        The generated journal entries will be sorted  by  date.   The  original
 | |
|        order of same-day entries will be preserved, usually.
 | |
| 
 | |
| 
 | |
| 
 | |
| REPORTING BUGS
 | |
|        Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel
 | |
|        or hledger mail list)
 | |
| 
 | |
| 
 | |
| AUTHORS
 | |
|        Simon Michael <simon@joyful.com> and contributors
 | |
| 
 | |
| 
 | |
| COPYRIGHT
 | |
|        Copyright (C) 2007-2016 Simon Michael.
 | |
|        Released under GNU GPL v3 or later.
 | |
| 
 | |
| 
 | |
| SEE ALSO
 | |
|        hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1),
 | |
|        hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-
 | |
|        dot(5), ledger(1)
 | |
| 
 | |
|        http://hledger.org
 | |
| 
 | |
| 
 | |
| 
 | |
| hledger 1.1                      December 2016                  hledger_csv(5)
 |