В настоящее время у нас есть обычный RUNS DAILY и импортирует десятки текстовых файлов в foxpro. Я работаю над преобразованием этого в TSQL. Я работаю с командой BULK INSERT
.T-SQL: BULK INSERT не дает полезной информации. ОШИБКА
Я создал команду sql и файл XML для каждого из десятков плоских файлов - по одному для каждого формата.
Для каждого файла, я взываю перевод, такие как это из командной строки:
sqlcmd -d MYDB -i Import_FILEA.sql -o Output_FILEA.txt
Он хорошо работает (если он работает). Проблема в том, что данные поступают от источника, который не проверяет данные до их отправки. Я не виню их; Я знаю, как это может случиться. Но теперь я нахожусь на месте.
My SQL скрипт выглядит следующим образом:
SET LANGUAGE us_english;
GO
SET DATEFORMAT ymd;
GO
DELETE FROM [MyDB].[dbo].[FILEA];
GO
BULK INSERT
[MyDB].[dbo].[FILEA]
FROM 'C:\Documents and Settings\somewhere\FILEA.DAT'
WITH
(
DATAFILETYPE ='CHAR',
FORMATFILE='C:\Documents and Settings\somewhere\translate_FILEA.xml',
ERRORFILE ='C:\Documents and Settings\somewhere\ERR_FILEA.TXT',
LASTROW = 400000
)
GO
LASTROW
аргумент только для целей отладки. Проблема в том, что когда эта вещь терпит неудачу, она полностью терпит неудачу и не сообщает мне строку или поле, вызывающее проблему. Он не создает никакого файла ошибки - или если он это делает, он вырывает его вскоре после. (Я вижу, что файл создается, а затем он исчезает - самая суровая вещь.)
Меня так раздражает то, что я соблазн написать скрипт perl или, возможно, какую-то скомпилированную vba с регулярным выражением, чтобы проверить очень немногие поля, которые не являются полями символов. Это мелочь, но это лишний раз - и я беспокоюсь о том, что следующий парень будет ее поддерживать. (Я не думаю, что любой из других ребят может программироваться в perl или знаком с regexp в .net). Кроме того, в документации MSDN кажется, что bulk insert
должен сообщить о проблеме в этом файле ошибки.
Любые идеи? Это известная проблема? Есть ли какой-то параметр, который мне не хватает? Есть ли другой способ? Или внешний контроль формата данных правильный путь?