![]() |
#10 |
Участник
|
Я так понимаю, задача сводится к тому, чтобы закачать файл в поле типа TEXT на MS SQL? Для этого можно использовать команду самого MS SQL сервера BULK INSERT.
Т.е. логика примерно такая Код: static void Job_Connection(Args _args) { str strQuery; FileName fileName; Connection connection; Statement statement; ; fileName = "\\\\MyServer\\ShareDir\\MyFile.xpo"; strQuery = "SET NOCOUNT ON"+ " IF Object_ID('tempdb..#tmpFile') IS NOT NULL DROP TABLE #tmpFile"+ " CREATE TABLE #tmpFile (Content TEXT)"+ " BULK INSERT #tmpFile FROM '"+fileName+"' WITH (ROWTERMINATOR='`')"+ ""; connection = new Connection(); statement = connection.createStatement(); statement.executeQuery(strQuery); } В качестве разделителя строк указываешь символ, которого заведомо не может быть внутри твоего XPO. Тогда весь файл будет закачан в одно поле. Получишь временную табличку #tmpFile с единственным полем, содержимое которого - это твой файл XPO. Далее уже стандартным UPDATE перекидываешь это содержимое в нужное тебе поле. Если опцию ROWTERMINATOR не указывать, то запись XPO произойдет построчно. Каждая строка XPO - отдельная строка в таблице #tmpFile. Как удобнее хранить - одним куском или построчно - решай сам. Ограничение в 1000 символов есть на поле таблицы, но не на символьные строки. Тут ограничивающим фактором будет не то, сколько сможет поддерживать AXAPTA, а то, сколько сможет "проглотить" драйвер ODBC или ADO через которые будет устанавливаться соединение с сервером. Это надо доку по соответсвующему драйверу читать. |
|
|
За это сообщение автора поблагодарили: belugin (7). |