Путь COPY INTO с подстановочными знаками = индекс вне диапазона - PullRequest
1 голос
/ 17 апреля 2020

Я пытаюсь использовать COPY INTO для загрузки файлов в папку с учетной записью хранения (ADLS Gen2).

Если я объединяю пути для каждого файла, он работает.

COPY INTO dbo.internal_heap
FROM 'https://storageaccount.dfs.core.windows.net/folderA/folderB/1.orc',
     'https://storageaccount.dfs.core.windows.net/folderA/folderB/2.orc',
     'https://storageaccount.dfs.core.windows.net/folderA/folderB/3.orc',
     'https://storageaccount.dfs.core.windows.net/folderA/folderB/4.orc'
WITH (
    FILE_TYPE = 'ORC'
    ,CREDENTIAL=(IDENTITY= 'Managed Identity')
)

Если я использую такие карточки, как это:

COPY INTO dbo.internal_heap
    FROM 'https://storageaccount.dfs.core.windows.net/folderA/folderB/*.orc'
    WITH (
        FILE_TYPE= 'ORC'
        ,CREDENTIAL=(IDENTITY= 'Managed Identity')
    )

У меня есть эта ошибка:

Msg 110813, Level 16, State 1, Line 1
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: startIndex

Любая подсказка?

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Я получил ответ от команды Synapse.

Если все имена файлов OR C начинаются с 'part-', вам нужно указать свое местоположение следующим образом:

COPY INTO dbo.internal_heap
    FROM 'https://storageaccount.dfs.core.windows.net/folderA/folderB/part-*.orc'
    WITH (
        FILE_TYPE= 'ORC'
        ,CREDENTIAL=(IDENTITY= 'Managed Identity')
    )
0 голосов
/ 17 апреля 2020

Документация показывает, что подстановочные знаки возможны, но дает следующую рекомендацию:

Для лучшей производительности избегайте указания подстановочных знаков, которые будут расширяться при большем количестве файлов. Если возможно, укажите несколько местоположений файлов вместо указания подстановочных знаков.

В документах также указано, что "расширение подстановочных знаков применяется рекурсивно ...", поэтому я бы угадал ваша ошибка возникает из-за того, что у вас есть несколько папок? Попробуйте удалить любые другие папки из того же родительского каталога, что и в процессе отладки.

COPY INTO все еще находится в режиме предварительного просмотра, поэтому на данный момент может быть несколько багетов или две. Попробуйте подать запрос на поддержку MS через портал Azure.

...