Managing stages

The snow object stage commands let you perform additional stage-specific tasks:

Create a named stage

The snow object stage create command creates a named stage if it does not already exist.

snow object stage create NAME
Copy

For example, to create a stage called new_stage, enter the following command:

snow object stage create new_stage
Copy
+-----------------------------------------------------+
| key    | value                                      |
|--------+--------------------------------------------|
| status | Stage area NEW_STAGE successfully created. |
+-----------------------------------------------------+

The following example shows what happens if you try to create a stage, packages, that already exists.

# stage that already exists
snow object stage create packages
Copy
+--------------------------------------------------------+
| key    | value                                         |
|--------+-----------------------------------------------|
| status | PACKAGES already exists, statement succeeded. |
+--------------------------------------------------------+

Copy files to and from a stage

The snow object stage copy command copies a file from the local machine to a stage or from a stage to a local machine.

snow object stage copy @SOURCE_PATH DESTINATION_PATH
Copy

One of SOURCE_PATH or DESTINATION_PATH must be a local path, while the other must a path to the Snowflake stage. Note the following:

  • The stage path must start with @, as shown in the following examples.

  • When copying a single file, the DESTINATION_PATH must identify a directory, not a file. If the specified directory does not exist, the command creates it.

  • When copying a local directory to a stage, the local directory must contain only files; directories containing sub-directories are not supported.

  • When copying a directory from a stage to a local filesystem, the command currently flattens its internal tree structure. To illustrate, assume your local directory contains the following:

    test_case.py
    tests/abc.py
    tests/test1/x1.txt
    tests/test1/x2.txt
    

    After copying the directory from the stage, the local filesystem directory contains the following:

    test_case.py
    abc.py
    x1.txt
    x2.txt
    

To copy files from the local machine to a stage, enter a commands similar to the following:

snow object stage copy local_example_app @example_app_stage/app
Copy
put file:///.../local_example_app/* @example_app_stage/app4 auto_compress=false parallel=4 overwrite=False
+--------------------------------------------------------------------------------------
| source           | target           | source_size | target_size | source_compression...
|------------------+------------------+-------------+-------------+--------------------
| environment.yml  | environment.yml  | 62          | 0           | NONE             ...
| snowflake.yml    | snowflake.yml    | 252         | 0           | NONE             ...
| streamlit_app.py | streamlit_app.py | 109         | 0           | NONE             ...
+--------------------------------------------------------------------------------------

You can use the snow object stage list command to verify the command copied the files successfully:

snow object stage list example_app_stage
Copy
ls @example_app_stage
​+------------------------------------------------------------------------------------
| name                                   | size | md5                              | ...
|----------------------------------------+------+----------------------------------+-
| example_app_stage/app/environment.yml  | 64   | 45409c8da098125440bfb7ffbcd900f5 | ...
| example_app_stage/app/snowflake.yml    | 256  | a510b1d59fa04f451b679d43c703b6d4 | ...
| example_app_stage/app/streamlit_app.py | 112  | e6c2a89c5a164e34a0faf60b086bbdfc | ...
+------------------------------------------------------------------------------------

The following example copies files from a stage to a directory on the local machine:

mkdir local_app_backup
snow object stage copy @example_app_stage/app local_app_backup
Copy
get @example_app_stage/app file:///.../local_app_backup/ parallel=4
+------------------------------------------------+
| file             | size | status     | message |
|------------------+------+------------+---------|
| environment.yml  | 62   | DOWNLOADED |         |
| snowflake.yml    | 252  | DOWNLOADED |         |
| streamlit_app.py | 109  | DOWNLOADED |         |
+------------------------------------------------+

You can list the directory contents to verify the command copied the files correctly:

ls local_app_backup
Copy
environment.yml  snowflake.yml    streamlit_app.py

Note that the local directory must exist.

List the contents of a stage

The snow object stage list command lists the stage contents.

snow object stage list NAME
Copy

For example, to list the packages in a stage, enter the following command:

snow object stage list packages
Copy
ls @packages
+-------------------------------------------------------------------------------------
| name                 | size     | md5                              | last_modified
|----------------------+----------+----------------------------------+----------------
| packages/plp.Ada.zip | 824736   | 90639175a0ac7735e67525118b81047c | Tue, 16 Jan ...
| packages/samrand.zip | 13721024 | 648f0bae2f65fd4c9f178b17c23de7e5 | Tue, 16 Jan ...
+-------------------------------------------------------------------------------------

Remove a file from a stage

The snow object stage remove command removes a file from a stage.

snow object stage remove STAGE_NAME FILE_NAME
Copy

For example, to remove a file from a stage, enter a command similar to the following:

snow object stage remove example_app_stage app/pages/my_page.py
Copy
+-------------------------------------------------+
| key    | value                                  |
|--------+----------------------------------------|
| name   | example_app_stage/app/pages/my_page.py |
| result | removed                                |
+-------------------------------------------------+