powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Путь в качестве переменной
11 сообщений из 11, страница 1 из 1
Путь в качестве переменной
    #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
Путь в качестве переменной
    #40035861
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qiwi1,

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

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

обычно, я отвечаю на вопрос ТС, так как причин выбрать необычное решение - множество.
...
Рейтинг: 0 / 0
Путь в качестве переменной
    #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
Путь в качестве переменной
    #40036049
Qiwi1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще вопрос:
Загружаемый hml файл содержит первую строку
<?xml version="1.0" encoding="UTF-8"?>

как ее удалить не вручную?
...
Рейтинг: 0 / 0
Путь в качестве переменной
    #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
Путь в качестве переменной
    #40036191
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обычный REPLACE не предлагать?
...
Рейтинг: 0 / 0
Путь в качестве переменной
    #40036200
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One
обычный REPLACE не предлагать?

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


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