hledger/hledger/Hledger/Cli/Commands/Import.md

44 lines
1.8 KiB
Markdown

import\
Read new transactions added to each FILE since last run, and add them to
the main journal file. Or with --dry-run, just print the transactions
that would be added. Or with --catchup, just mark all of the FILEs'
transactions as imported, without actually importing any.
_FLAGS
The input files are specified as arguments - no need to write -f before each one.
So eg to add new transactions from all CSV files to the main journal, it's just:
`hledger import *.csv`
New transactions are detected in the same way as print --new:
by assuming transactions are always added to the input files in increasing date order,
and by saving `.latest.FILE` state files.
The --dry-run output is in journal format, so you can filter it, eg
to see only uncategorised transactions:
```shell
$ hledger import --dry ... | hledger -f- print unknown --ignore-assertions
```
### Importing balance assignments
Entries added by import will have their posting amounts made explicit (like `hledger print -x`).
This means that any [balance assignments](/journal.html#balance-assignments) in imported files must be evaluated;
but, imported files don't get to see the main file's account balances.
As a result, importing entries with balance assignments
(eg from an institution that provides only balances and not posting amounts)
will probably generate incorrect posting amounts.
To avoid this problem, use print instead of import:
```shell
$ hledger print IMPORTFILE [--new] >> $LEDGER_FILE
```
(If you think import should leave amounts implicit like print does,
please test it and send a pull request.)
### Commodity display styles
Imported amounts will be formatted according to the canonical [commodity styles](journal.html#commodity-display-style)
(declared or inferred) in the main journal file.