# cockroach nodelocal upload

New in v20.1: The `cockroach nodelocal upload` command uploads a file to the external IO directory on a node's (the gateway node, by default) local file system.

This command takes in a source file to upload and a destination filename. It will then use a SQL connection to upload the file to the node's local file system, at `externalIODir/destination/filename`.

Note:

The source file is only uploaded to one node, not all of the nodes.

## Required privileges

Only members of the `admin` role can run `cockroach nodelocal upload`. By default, the `root` user belongs to the `admin` role.

## Considerations

The `--external-io` flag on the node you're uploading to cannot be set to `disabled`.

## Synopsis

Upload a file:

    $ cockroach nodelocal upload <location/of/file> <destination/of/file> [flags]

View help:

    $ cockroach nodelocal upload --help

## Flags

Flag | Description
--- | ---
`--certs-dir` | The path to the certificate directory containing the CA and client certificates and client key. Env Variable: `COCKROACH_CERTS_DIR` Default: `${HOME}/.cockroach-certs/`
`--echo-sql` | Reveal the SQL statements sent implicitly by the command-line utility.
`--host` | The server host and port number to connect to. This can be the address of any node in the cluster. Env Variable: `COCKROACH_HOST` Default: `localhost:26257`
`--insecure` | Use an insecure connection. Env Variable: `COCKROACH_INSECURE` Default: `false`
`--url` | A connection URL to use instead of the other arguments. Env Variable: `COCKROACH_URL` Default: no URL
`--user` `-u` | The SQL user that will own the client session. Env Variable: `COCKROACH_USER` Default: `root`

## Examples

### Upload a file

To upload a file to the default node (i.e., the gateway node):

    $ cockroach nodelocal upload ./grants.csv test/grants.csv --certs-dir=certs

    successfully uploaded to nodelocal://1/test/grants.csv

Then, you can use the file to `IMPORT` or `IMPORT INTO` data.

### Upload a file to a specific node

To upload a file to a specific node (e.g., node 2), use the `--host` flag:

    $ cockroach nodelocal upload ./grants.csv grants.csv --host=localhost:26259 --insecure

    successfully uploaded to nodelocal://2/grants.csv

Or, use the `--url` flag:

    $ cockroach nodelocal upload ./grants.csv grants.csv --url=postgresql://root@localhost:26258?sslmode=disable --insecure

    successfully uploaded to nodelocal://3/grants.csv

Then, you can use the file to `IMPORT` or `IMPORT INTO` data.

## See also

- Other Cockroach Commands
- Troubleshooting Overview
- Import Data
- `IMPORT`
- `IMPORT INTO`