Во-первых, извините за длинный пост. Я хотел быть внимательным с моими примерами / данными, и основная часть этого поста именно такая.
Я унаследовал процесс массового импорта, используя файл формата (.fmt) на моей новой работе. Этот процесс был создан парнем, который работал здесь до меня, и моя работа - изучить этот процесс (и исправить его сейчас). У меня ограниченные знания об этом, но я провел некоторые исследования. Через несколько недель я никуда не попал. Вот с чем я работаю ...
- Команда BCP для импорта данных из C: \ Desktop \ 20180629_2377167_PR_NP.txt в таблицу LA_Temp.dbo.ProvReg
bcp LA_Temp.dbo.ProvReg IN C: \ Desktop \ 20180629_2377167_PR_NP.txt -f C: \ Desktop \ PROVREG.FMT -T -S SERVERNAME -k -m 1000000
- Структура таблицы, из которой создается файл формата:
SELECT [NPI]
,[D1]
,[EntityType]
,[D2]
,[ReplaceNPI]
,[D3]
,[ProvName]
,[D4]
,[MailAddr1]
,[D5]
,[MailAddr2]
,[D6]
,[MailCity]
,[D7]
,[MailState]
,[D8]
,[MailZip]
,[D9]
,[MailCountry]
,[D10]
,[MailPhone]
,[D11]
,[MailFax]
,[D12]
,[LocAddr1]
,[D13]
,[LocAddr2]
,[D14]
,[LocCity]
,[D15]
,[LocState]
,[D16]
,[LocZip]
,[D17]
,[LocCountry]
,[D18]
,[LocPhone]
,[D19]
,[LocFax]
,[D20]
,[Taxonomy1]
,[D21]
,[Taxonomy2]
,[D22]
,[Taxonomy3]
,[D23]
,[OtherProvID]
,[D24]
,[OtherProvIDType]
,[D25]
,[ProvEnumDate]
,[D26]
,[LastUpdate]
,[D27]
,[DeactivateRC]
,[D28]
,[DeactivateDate]
,[D29]
,[ReactivateDate]
,[D30]
,[Gender]
,[D31]
,[License]
,[D32]
,[LicenseState]
,[D33]
,[AuthorizedContact]
,[D34]
,[ContactTitle]
,[D35]
,[ContactPhone]
,[D36]
,[PanelOpen]
,[D37]
,[Language1]
,[D38]
,[Language2]
,[D39]
,[Language3]
,[D40]
,[Language4]
,[D41]
,[Language5]
,[D42]
,[AgeRestrict]
,[D43]
,[PCPMax]
,[D44]
,[PCPActual]
,[D45]
,[PCPAll]
,[D46]
,[EnrollInd]
,[D47]
,[EnrollDate]
,[D48]
,[FamilyOnly]
,[D49]
,[SubSpec1]
,[D50]
,[SubSpec2]
,[D51]
,[SubSpec3]
,[D52]
,[ContractName]
,[D53]
,[ContractBegin]
,[D54]
,[ContractEnd]
,[D55]
,[Parish1]
,[D56]
,[Parish2]
,[D57]
,[Parish3]
,[D58]
,[Parish4]
,[D59]
,[Parish5]
,[D60]
,[Parish6]
,[D61]
,[Parish7]
,[D62]
,[Parish8]
,[D63]
,[Parish9]
,[D64]
,[Parish10]
,[D65]
,[Parish11]
,[D66]
,[Parish12]
,[D67]
,[Parish13]
,[D68]
,[Parish14]
,[D69]
,[Parish15]
,[D70]
,[PCPInd]
,[D71]
,[DisplayOnline]
,[D72]
,[ExpAgeRestrict]
,[D73]
,[Suffix]
,[D74]
,[Title]
,[D75]
,[PrescriberInd]
,[Spaces]
,[End]
ОТ [LA_Temp]. [Dbo]. [ProvReg]
- Пример данных текстового файла (это одна строка)
9999999999 ^ 0 ^ ^ ^ 3800 HMA BLVD STE 305 ^ ^ METAIRIE ^ LA ^ 70006 ^ ^ 5048729679 ^ ^ 3800 HMA BLVD ^ ^ METAIRIE ^ LA ^ 70006 ^ ^ 9999999999 ^ ^ 207Q00000X ^ ^ ^ 000000000 ^ ^ ^ ^ 00000000 ^ ^ 00000000 ^ 00000000 ^ F ^ ^ LA ^ ^ ^ ^ N ^ 1 ^ 0 ^ 0 ^ 0 ^ 0 ^ 2 ^ 00000 ^ 00000 ^ 00000 ^ ^ ^ ^ ^ ^ ^ 000000000000000000000000000000 ^ 00000000 ^ 00000000 ^ 26 ^ 00 ^ 00 ^ 00 ^ 00 ^ 00 ^ 00 ^ 00 ^ 00 ^ 00 ^ 00 ^ 00 ^ 00 ^ 00 ^ 00 ^ 0 ^ 0 ^ Принимаются пациенты в возрасте 000-000 ^ ^ MD ^ ^
- Формат файла
11,0
153
1 SQLCHAR 0 40 "\ t" 1 NPI SQL_Latin1_General_Pref_CP1_CI_AS
2 SQLCHAR 0 2 "\ t" 2 D1 SQL_Latin1_General_Pref_CP1_CI_AS
3 SQLCHAR 0 2 "\ t" 3 EntityType
... вплоть до ...
153 SQLCHAR 0 2 "\ r \ n" 153 Конец
Я изменил каталоги, имя сервера и некоторые данные текстового файла для обеспечения безопасности, однако он очень похож.
Вот проблема, с которой я сталкиваюсь:
При использовании «\ t» в файле формата, который я только что создал из таблицы SQL, я получаю ошибку: [Microsoft] [Собственный клиент SQL Server 11.0] В файле данных BCP обнаружен непредвиденный EOF.
Если я поменяю это просто на "" или "^" (как мне кажется, так должно быть, поскольку текстовый файл использует разделитель моркови), строки начали копироваться с ошибкой
[Microsoft] [Собственный клиент SQL Server 11.0] Строковые данные, усечение справа SQLState = 22001, NativeError = 0. Ошибка копирования BCP.
Если кто-то может указать мне правильное направление здесь для устранения этой проблемы, или если вы видите что-то неуместное, сообщите мне. Как я уже говорил, я занимался этим в течение некоторого времени и могу использовать любые предложения, которые я могу получить. К сожалению, в моей компании нет никого, кто бы мог спросить об этом.