Как читать несколько JSON файлов из папки в SQL без использования Bulk - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь прочитать несколько файлов JSON в SQL. У меня нет массовых разрешений, и я использую DbVisualizer. Сейчас мне нужно скопировать и вставить каждый файл. Есть ли способ прочитать более 400 файлов с разными именами.

Declare @json nvarchar(Max)
Set @json = '{
  "AudioFileResults": [
    {
      "AudioFileName": "test"
     }]}'

1 Ответ

0 голосов
/ 18 июня 2020

Сценарий PowerShell, подобный этому:


$files = Get-ChildItem -Path "c:\temp\400jsons\*.json"

$beforeSql = Get-Content -Path "c:\temp\400jsons\before.sql" -Raw
$afterSql = Get-Content -Path "c:\temp\400jsons\after.sql" -Raw

$sql = "declare @json nvarchar(max);`r`n"

foreach ($f in $files){
    $sql += $beforeSql 
    $sql += Get-Content $f.FullName -Raw
    $sql += $afterSql + "`r`n"
}

Set-Content -Path "C:\temp\400jsons\out.sql" -Value $sql

, будет читать сценарий before.sql, подобный этому:

set @json = '

И сценарий after.sql, подобный этому:

';
insert into tableX values(@json);

А затем несколько раз прочтите сотни или тысячи файлов json в папке, снова и снова создавая строку before + json + after, в конечном итоге записывая файл out.sql, который выглядит следующим образом:

declare @json nvarchar(max);
set @json = '{ "my":"json1" }';
insert into tableX values(@json);

set @json = '{ "my":"json2" }';
insert into tableX values(@json);

Который вы можете скопировать и вставить в DBV и запустить. Это в основном ваши 400 jsons, объединенные в один файл с некоторыми sql между

Конечно, вам все равно нужно создать файлы до и после, чтобы они были правильными SQL для того, что вы действительно хотите запустить

...