Я помещаю файл в Snowflake и загружаю его в таблицу с помощью Copy. Перед загрузкой я хочу проверить количество столбцов в файле, чтобы убедиться, что оно соответствует таблице.
Как я могу получить количество столбцов для этого поэтапного файла?
Я помещаю файл в Snowflake и загружаю его в таблицу с помощью Copy. Перед загрузкой я хочу проверить количество столбцов в файле, чтобы убедиться, что оно соответствует таблице.
Как я могу получить количество столбцов для этого поэтапного файла?
Существует обходной путь, вы можете сначала загрузить заголовок в другом формате файла, разделить его, чтобы получить массив, и, наконец, узнать размер массива, чтобы получить общий размер.
cat test.csv
a|b|c
1|2|3
Создайте этап имени с разделителями, отличными от конвейера, чтобы собрать все данные в одном столбце.
create or replace stage stg_col_count file_format = ( type = 'csv');
select $1 Col from @stg_col_count;
+-------+
| COL |
|-------|
| a|b|c |
+-------+
Разделите его, чтобы получить массив, а затем взять размер. Вы можете взять только заголовок
select array_size(split($1,'|')) no_of_col from @stg_col_count limit 1;
+-----------+
| NO_OF_COL |
|-----------|
| 3 |
+-----------+
Я не думаю, что есть способ сделать это. Но если это файл CSV, который вы подготовили и хотите просмотреть данные перед загрузкой в таблицу, вы можете использовать SQL, как показано ниже.
SELECT $1,$2,$3, ...$n from @<your stage name> - n is the number of columns in the CSV file
Я не думаю, что есть способ подсчитать количество столбцов из поэтапных файлов. Если вы хотите проверить входной файл (ы) перед загрузкой в фактическую таблицу, вы можете использовать VALIDATION_MODE в команде копирования, он проверит и вернет ошибку, если таковая имеется.
[VALIDATION_MODE = RETURN__ROWS | RETURN_ERRORS | RETURN_ALL_ERRORS]