Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Путь в качестве переменной / 11 сообщений из 11, страница 1 из 1
14.01.2021, 15:47
    #40035857
Qiwi1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь в качестве переменной
Добрый день! Не проходите мимо помогите, кто сталкивался, плизз
есть процедура необходимо ее доработать в качестве входной переменной сделать путь к файлу (запихнуть C:\Users\Documents\1.xml в переменную)

create PROCEDURE [dbo].[OPENXML]
AS
BEGIN
SELECT * into #T FROM
OPENROWSET(Bulk 'C:\Users\Documents\1.xml',SINGLE_CLOB)

....
...
Рейтинг: 0 / 0
14.01.2021, 15:59
    #40035861
ptr128
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь в качестве переменной
Qiwi1,

временную таблицу нужно будет создавать заранее или использовать постоянную/глобальную временную.
Запрос заполнения таблицы из OPENROWSET записываете в переменную @sql_str типа nvarchar(max).
Затем выполняете запрос через EXEC (@str_str)
...
Рейтинг: 0 / 0
15.01.2021, 02:46
    #40036005
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь в качестве переменной
ptr128,

обычно делают наоборот - пишут скрипт или приложение, которые загружает документы на сервер.
...
Рейтинг: 0 / 0
15.01.2021, 09:35
    #40036020
ptr128
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь в качестве переменной
Владислав Колосов,

обычно, я отвечаю на вопрос ТС, так как причин выбрать необычное решение - множество.
...
Рейтинг: 0 / 0
15.01.2021, 10:04
    #40036030
Qiwi1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь в качестве переменной
ptr128,
Пишу
...
declare @FileName nvarchar(255) ;
set @FileName = 'C:\Users\Documents\1.xml';
declare @DOC nvarchar(max);
DECLARE @hdoc int;
SET @DOC=(select * from(SELECT * FROM OPENROWSET(BULK '''+@FileName+''', SINGLE_CLOB) ));



-----------------далее уже работаю с файлом----------------------------------
EXEC sp_xml_preparedocument @hdoc OUTPUT, @DOC;
--------------------------------
SELECT id,name
FROM OPENXML (@hdoc, 'root/items/item',2)
WITH (id int ,
name Varchar(255) );

EXEC sp_xml_removedocument @hdoc;
...


Ругается "Корреляционное имя должно быть указано для группового набора строк в предложении FROM."
В чем ошибка?
...
Рейтинг: 0 / 0
15.01.2021, 11:12
    #40036049
Qiwi1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь в качестве переменной
И еще вопрос:
Загружаемый hml файл содержит первую строку
<?xml version="1.0" encoding="UTF-8"?>

как ее удалить не вручную?
...
Рейтинг: 0 / 0
15.01.2021, 16:10
    #40036145
Qiwi1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь в качестве переменной
ptr128
Qiwi1,

временную таблицу нужно будет создавать заранее или использовать постоянную/глобальную временную.
Запрос заполнения таблицы из OPENROWSET записываете в переменную @sql_str типа nvarchar(max).
Затем выполняете запрос через EXEC (@str_str)


Вот так наконец-то получилось, спасибо!
...
declare @FileName nvarchar(255) ;
set @FileName = 'C:\Users\1.xml';
declare @DOC nvarchar(max);
DECLARE @hdoc int;
CREATE TABLE #BulkImport (BulkColumn nvarchar(max))
--Загружаем файл в xml переменную
exec ('Insert into #BulkImport SELECT * FROM OPENROWSET(BULK '''+@FileName+''', SINGLE_CLOB) AS x ')
SET @DOC=(select BulkColumn from #BulkImport)

EXEC sp_xml_preparedocument @hdoc OUTPUT, @DOC;
---------------------работаю с xml-----------

SELECT id,name
FROM OPENXML (@hdoc, 'root/ss/s',2)----?
WITH (id int ,
name Varchar(255) );

EXEC sp_xml_removedocument @hdoc;
...


Теперь еще одну проблему решить не могу-убрать из xml декларацию (<?xml version="1.0" encoding="UTF-8"?>)
пока убираю ее вручную, но это не вариант, тк файлов много. Как это сделать, кто знает подскажите, пожалуйста!
...
Рейтинг: 0 / 0
15.01.2021, 16:51
    #40036191
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь в качестве переменной
обычный REPLACE не предлагать?
...
Рейтинг: 0 / 0
15.01.2021, 17:01
    #40036200
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь в качестве переменной
Konst_One
обычный REPLACE не предлагать?

Нафига козе баян?
substring достаточно.
...
Рейтинг: 0 / 0
15.01.2021, 17:45
    #40036223
Qiwi1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь в качестве переменной
aleks222,
попробую, спасибо!
...
Рейтинг: 0 / 0
15.01.2021, 18:09
    #40036230
Qiwi1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь в качестве переменной
Получилось, спасибо за подсказку!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Путь в качестве переменной / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]