Published on

December 6, 2004

Загрузка нескольких файлов в таблицу SQL Server

В этой статье мы рассмотрим метод загрузки нескольких файлов в таблицу 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, вы можете эффективно загружать файлы и сохранять их содержимое в таблице для дальнейшего анализа и обработки.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.