我正在嘗試將文本文件導入到具有其他字段以及我需要同時填充的表中。這些字段是trans_type_code(varchar),raw_record_status(varchar),import_file_id(int)和import_file_line(int)。前三個字段不會改變每個導入記錄,但第四個字段顯然是這樣做的。我正在執行存儲過程以從VBS導入數據,只傳遞import_file_id。從文本文件中導入不同數量的字段到MS SQL
我首先考慮使用BULK INSERT和FORMATFILE爲導入的文本指定目標字段,但我無法弄清楚如何在同一時間填充其他字段。我也不知道如何從導入文件中獲取行號。
我已經創建了一個使用批量插入到臨時表的進程,然後從臨時表中選擇插入到import_raw_records來填充上面列出的前四個字段,但並非所有導入記錄都具有相同數量的字段。如果我使用導入數據的最大可能字段數創建臨時表,那麼文本文件中的數據將根據我正在使用的ROWTERMINATOR = \ n填充每個字段,而不包裝到下一個記錄。僅導入四個字段的記錄將在單個記錄中的臨時表中填充20個字段,而不是在臨時表中創建五個單獨的記錄。
我確認我的導入文件中的CRLF確實是0D0A。這是導入數據的代碼: set @sqlcmd = ' BULK INSERT #temp_import_records FROM ''' + @import_file + ''' WITH (ROWTERMINATOR = ''\n'') '
解決此問題的最佳方法是什麼?我應該以不同的方式處理這個問題嗎我不是一個新手,但是我仍然有很多東西需要學習SQL。感謝您閱讀本文,我希望您能提供幫助。
感謝, 約翰
這聽起來像你真正的問題是你的源文件沒有好的分隔符。我會用一些樣本數據作爲問題發佈。 – David
@David,謝謝你幫我縮小範圍。我也會這樣做,但是對於我想要做的事情來說,這是否合理?或者有更好的方法? – user3014525