我們目前有一個常規RUNS DAILY並將數十個平面文本文件導入到foxpro中。我正在努力將其轉換爲TSQL。我正在使用BULK INSERT
命令。T-SQL:BULK INSERT不會產生有用的ERRORFILE
我爲幾十個平面文件中的每一個創建了一個sql命令和一個XML文件 - 每種格式都有一個。
對於每一個文件,我調用翻譯像這樣的命令行:
sqlcmd -d MYDB -i Import_FILEA.sql -o Output_FILEA.txt
它運作良好,(它工作時)。問題在於數據來自不發送數據之前驗證數據的來源。我不責怪他們;我知道這些事情會如何發生。但現在我在一個地方。
我的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編程,或者熟悉.net中的正則表達式)此外,MSDN文檔使得它看起來像bulk insert
應該報告錯誤文件中的問題行。
任何想法?這是一個已知的問題嗎?有一些參數我錯過了嗎?有沒有其他的方法呢?或者是外部數據格式檢查器的正確方法?