#sql #sql-server #format #openrowset
#sql #sql-сервер #формат #openrowset
Вопрос:
Я хочу выбрать определенные значения из таблицы в SQL, используя значения в текстовом файле. Мой запрос заключается в следующем:
select * from hsi.itemdata i join openrowset (
bulk 'C:text.txt',
FORMATFILE = 'C:format.txt'
) d on i.itemnum = d.dochandle
Мой текстовый файл содержит значения, которые определенно находятся в таблице hsi.itemdata. Вот скриншот таблицы с моим text.txt файл рядом с ним:
таблица hsi.itemdata с text.txt файл
Мой файл формата кажется правильным:
10.0
1
1 SQLBIGINT 0 12 "n" 1 DocHandle SQL_Latin1_General_CP1_CI_AS
Единственная проблема, которую я смог увидеть, заключается в том, что столбец i.itemnum является типом данных INT, и когда я попытался указать в своем файле формата столбец как SQLINT, я получил сообщение об ошибке «Ошибка преобразования данных при массовой загрузке (переполнение) для строки 1, столбца 1 (DocHandle)».
Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю запрос, я не получаю результатов, и я не могу понять, почему это так. Я бы ожидал, что он вернет строки из таблицы hsi.itemdata, где информация соответствует тому, что находится в text.txt файл. Есть идеи?
Спасибо!
Комментарии:
1. И
select * from openrowset( ...
возвращает то, что вы думаете?2. @Alex-k Если я просто запускаю
select * from openrowset ( bulk 'C:text.txt', FORMATFILE = 'C:format.txt' )
, я получаю сообщение об ошибке: «Имя корреляции должно быть указано для массового набора строк в предложении from».