簡體   English   中英

帶有附加列的sql批量插入

[英]sql bulk insert with additional column

csv文件包含8列(col1,col2,...,col8),文件名也包含必須插入表中的日期。

如果表中的列數和csv文件中的列相等,則以下查詢將文件中的所有記錄導入到表中:

query += "BULK INSERT real_data FROM '" + path + "' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n')";

到目前為止,我還沒有找到修改查詢的解決方案,以便新記錄可以包含從文件名中提取的日期。 無論如何我創建了一個提取日期的函數:

DateTime eventTime = extractDate(path);

並且希望將eventTime插入到從文件導入的每個記錄的第9列。

有沒有人知道如何修改/創建查詢語句從文件導入8列,並為每個導入的記錄添加日期為第9列?

謝謝!

您不能向使用BULK INSERT命令加載的數據集添加“任意列”。 (如果你想處理它們的復雜性,SSIS包可以做到這一點。)

以下技巧有點復雜,但我已多次成功使用它:

  • 確定額外列的名稱和要加載到其中的值(例如,MyDate和'Jan 1,1980')
  • 在表上創建(臨時)默認值(ATLER TABLE MyTable添加約束DF_TempLoad默認'1980年1月1日'為MyDate [ 檢查語法,它可能關閉 ]
  • 在表上創建(臨時)視圖,僅列出要批量插入的列
  • 對視圖運行BULK INSERT; 未包含在視圖中的列將被分配默認值
  • 放下視圖
  • 刪除默認約束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM