В этой статье мы рассмотрим метод загрузки нескольких файлов в таблицу SQL Server. Для этого используются утилиты OSQL.exe и TEXTCOPY.exe. Обратите внимание, что для работы этого метода требуется установленный клиент SQL Server 2000 на компьютере, где вы запускаете пакетный файл, и учетная запись SQL Login должна иметь как минимум разрешение DBO на базу данных.
Шаг 1: Создание папки
Создайте папку на вашем компьютере, где вы будете хранить файлы, которые вы хотите загрузить в таблицу SQL Server. Например, вы можете создать папку с именем “Upload” на диске C (C:\Upload).
Шаг 2: Копирование необходимых утилит
Скопируйте утилиту TextCopy.exe из каталога \Program Files\Microsoft SQL Server\MSSQL\Binn в папку, созданную на шаге 1 (C:\Upload). Эта утилита используется для копирования содержимого файлов в таблицу SQL Server.
Шаг 3: Создание и выполнение пакетного файла
Создайте новый текстовый файл в папке C:\Upload и назовите его “Upload.bat”. Скопируйте и вставьте следующий код в файл:
@ECHO off
cls
REM Цель: Загрузить все файлы из папки в SQL сервер в виде таблицы
REM Создано: Ваше имя
REM Дата: [Текущая дата]
REM Контакт: [Ваш электронный адрес]
REM Проверка параметров
if "%1"=="" Goto noparmErr
if "%1"=="/?" Goto Help
REM Присвоение переменных
set Sourcefolder=%1
set servername=%2
set Databasename=%3
set loginname=%4
set password=%5
set LogFile=%6
Date/t > %6
time /t >> %6
REM Экспорт списка файлов в C:\upload\Dirlist.txt
dir %1 /b > C:\upload\Dirlist.txt
OSQL /S%2 /U%4 /P%5 /d%3 /Q"if exists (select * from %3.dbo.sysobjects where id = object_id(N'[Myuploadtable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table %3.dbo.[Myuploadtable] " >> %6
OSQL /S%2 /U%4 /P%5 /d%3 /Q"create table %3.dbo.Myuploadtable (id varchar(500), ImageFiles Image)" >> %6
FOR /F "usebackq delims==" %%i in (C:\upload\Dirlist.txt) do OSQL /S%2 /U%4 /P%5 /Q"insert into %3.dbo.Myuploadtable (id,ImageFiles) values('%%i',' ')" >> %6
FOR /F "usebackq delims==" %%i in (C:\upload\Dirlist.txt) do c:\upload\textcopy.exe /S%2 /U%4 /P%5 /D%3 /Tmyuploadtable /CImagefiles /F"%1%%i" /I /W"where [id]='%%i'" >> %6
GOTo END2
:noparmErr
Echo Usage help: example as follows
echo ...
Echo Objective: To upload all the files in the folder to SQL server Table
Echo Created by: Your Name
Echo USAGE:
ECHO ....
ECHO ....
Echo %0 SourceFolder Servername Databasename Login Password LogFile
Goto END2
:Help
Echo Usage help: example as follows
echo ...
Echo Objective: To upload all the files in the folder to SQL server Table
Echo Created by: Your Name
Echo USAGE:
ECHO ....
ECHO ....
Echo %0 SourceFolder Servername Databasename Login Password Logfile
Goto END2
:END
Echo "Compare Query results Completed" >>%LogFile%
date/t >> %LogFile%
time/t >> %LogFile%
goto END2
:END2
Сохраните файл и выполните его, дважды щелкнув по нему. Этот пакетный файл вызовет утилиту OSQL для создания таблицы [Myuploadtable] в указанной базе данных. Затем он вставит строки в таблицу, где каждая строка представляет файл в исходной папке. Наконец, он будет использовать утилиту TEXTCOPY для загрузки каждого файла в таблицу SQL Server.
Шаг 4: Выполнение пакетного файла с параметрами
При выполнении пакетного файла убедитесь, что вы указываете правильные параметры. Вот пример параметров:
Upload.bat C:\myfiles\ SQL MyDB sa yeahright x.log
Параметры объясняются следующим образом:
- Upload: Имя пакетного файла
- C:\myfiles\: Папка, где хранятся все исходные файлы
- SQL: Имя экземпляра SQL Server, куда будут загружены файлы
- MyDB: Имя базы данных, где будут храниться файлы
- sa: Имя входа в SQL Server
- yeahright: Пароль для входа sa
- x.log: Файл журнала, где хранится вся информация о процессе выполнения пакетного файла
Шаг 5: Переименование таблицы
Если вы снова запустите пакетный файл, он удалит и создаст таблицу [Myuploadtable]. Чтобы избежать этого, вы можете переименовать таблицу с помощью следующей команды:
sp_rename 'Myuploadtable','Prod_ImageTable'
Переименовав таблицу, пакетный файл не будет создавать ее повторно при повторном выполнении.
Заключение
В этой статье было представлено руководство для разработчиков и администраторов SQL Server о том, как загрузить несколько файлов в таблицу SQL Server. Используя утилиты OSQL.exe и TEXTCOPY.exe, вы можете эффективно загружать файлы и сохранять их содержимое в таблице для дальнейшего анализа и обработки.