Въпреки че този отговор е закъснял, не видях каноничен отговор на проблема с отварянето на файловия формат .rpt и записването му в SQL таблица.
-
В SQL Server Management Studio в Object Explorer щракнете с десния бутон върху базата данни, в която искате да заредите файла, и изберете Задачи... Импортиране на данни.
-
Изберете Източник на плосък файл, изберете вашия файл, след което се уверете, че екранът е настроен така, че да съответства на следната екранна снимка (Кодова страница=65001 UTF-8, Формат=Разкъсан вдясно, Имена на колони в първия ред с данни). След това щракнете върху Напред.
- Щракнете върху първия знак на всяка колона (вижте жълтите акценти на екранната снимка по-долу за къде да щракнете), за да вмъкнете колони на подходящите места:
- Щракнете върху раздела Разширени вляво. Преминете през всяко име на колона и премахнете интервалите от края на името на колоната. Коригирайте типовете данни, както сметнете за добре. Предупреждение, че може да се наложи първите няколко колони да са низове поради долния колонтитул на файла „(NNN засегнати редове)“.
- Отидете в раздела Визуализация вляво, променете „Редове с данни за пропускане“ на 1 и щракнете върху Обновяване:
- Щракнете върху бутона Напред и настройте връзката си с вашата SQL база данни:
-
Щракнете върху Next и въведете името на вашата таблица във формат
[dbo].[MyTable]
след това щракнете върху Редактиране на съпоставянията и потвърдете съвпадението на типовете данни в колоните. Колоните на низ (DT_STR) трябва да бъдат колони с varchar тук. Unicode низ (DT_WSTR) трябва да бъде колони nvarchar тук. -
Щракнете върху Next и Finish, за да стартирате незабавно. Трябва да виждате съобщения за успех, а не грешки, надявам се:
- Има долен колонтитул, който казва „(засегнати NNN редове)“ (където NNN е броят на редовете във вашия файл). Изпратете заявка към целевата SQL таблица, за да намерите този ред и да го изтриете.
select * from MyTable where MyColumn1 like '%(%'
може да ви помогне да намерите този ред. Моля, потвърдете, че заявката връща само един ред, преди да го изтриете.