USE article_docs_db
GO
CREATE TABLE article_files (
DocID INT NOT NULL IDENTITY,
DocTitle NVARCHAR(50) NOT NULL,
DocFilename NVARCHAR(400) NOT NULL,
FileExtension NVARCHAR(8) NOT NULL,
DocSummary NVARCHAR(MAX) NULL,
DocContent VARBINARY(MAX) NULL,
CONSTRAINT [PK_article_files_DocID] PRIMARY KEY CLUSTERED (DocID ASC)
)
GO
Jak zrobić, żeby plik, którego ścieżkę podaję w kolumnie DocFilename był automatycznie ładowany do kolumny DocContent? Próbuję w ten sposób uzyskać możliwość przeszukiwania zawartości tych plików.
Chcesz wykonać INSERT do kolumny DocContent na podstawie ścieżki wstawionej w DocFileName? Czyli procedura niejako przyjmuje jeden parametr, ale wypełnia dwie kolumny? (BTW nie wiem jak wyobrażasz sobie przeszukiwanie plików binarnych?)
Nie. Ja wpisuję ścieżkę do pliku, a procedura wrzuca ten plik do DocContent.
Się da. Full-text search umożliwia przeszukiwanie plików binarnych. Po odpaleniu takiego kodu:
SELECT document_type, version, manufacturer
FROM sys.fulltext_document_types
Uzyskasz listę 136 obsługiwanych typów plików. EDIT: Ewentualnie jak w sposób manualny wprowadzić te pliki do tej kolumny? EDIT2: OK. Poradziłem sobie tak, że wprowadzam pliki do kolumny ręcznie za pomocą polecenia:
USE article_docs_db;
GO
INSERT INTO article_files(DocTitle, DocFilename,FileExtension, DocContent)
SELECT
'tytuł_dokumentu' AS DocTitle,
'nazwa_pliku.txt' AS DocFilename,
'.rozszerzenie' AS FileExtention,
* FROM OPENROWSET(BULK N'C:\ścieżka_do_pliku\nazwa_pliku.rozszerzenie', SINGLE_BLOB) AS Document
GO
W sumie to o to mi chodziło. Z tego co teraz widzę, to u Ciebie DocFileName to nazwa pliku, a nie jego ścieżka. Mógłbyś sobie przygotować taką procedurę, która pobiera parametr ścieżka do pliku, a następnie na podstawie tego parametru wypełnia kolumny DocFileName, DocFileExtension (trzeba się zastanowić, co zrobić, gdy plik nie ma rozszerzenia) i DocContent. Gorzej będzie z DocTitle i DocSummary. To musiałyby być zapewne dwa dodatkowe parametry procedury, ewentualnie jakiś tekst wyciągnięty z pliku za pomocą wspomnianego przez Ciebie Full-text search (np. przy użyciu wyrażeń regularnych, o ile Full-text search na takie pozwala).
Kajam się. Nie wiedziałem. Daj znać na ile wydajna jest ta technologia i na ile obciąża serwer. Nie oczekuję, że przeprowadzisz jakieś testy, sam link do gotowych (w miarę aktualnych) w zupełności mi wystarczy.