[英]Error while importing table data through bcp command in SQL server
我正在嘗試通過 bcp 命令行實用程序將數據導入表中。 早些時候我遇到的錯誤是右截斷,我將兩個表中的數據類型更改為 nvarchar 並使用 -n 開關運行 FMT 命令,現在錯誤似乎已經改變但我仍然無法導入數據。
我用來導入的命令如下:
bcp ABC.ABC.DIM_Sales_Channel in C:\temp\datafile\DIM_Sales_Channel.dat -f C:\temp\formatcorrected\DIM_Sales_Channel.fmt -T
顯示的錯誤如下:
[Microsoft][SQL Server Native Client 11.0][SQL Server]Conversion not allowed from the given field type 0x38 for field 8 to column 8.
11.0
9
1 SQLINT 0 4 "" 1 Sales_Channel_SK ""
2 SQLINT 0 4 "" 2 Sales_Channel_ID ""
3 SQLNCHAR 2 36 "" 3 Sales_Channel_Code Latin1_General_CI_AI
4 SQLNCHAR 2 36 "" 4 Sales_Channel_Level_1 Latin1_General_CI_AI
5 SQLNCHAR 2 36 "" 5 Sales_Channel_Level_2 Latin1_General_CI_AI
6 SQLDATETIME 1 8 "" 6 Inserted_Date ""
7 SQLDATETIME 1 8 "" 7 Modified_Date ""
8 SQLINT 1 4 "" 8 batchno ""
9 SQLINT 1 4 "" 9 Status ""
[Microsoft][SQL Server Native Client 11.0][SQL Server]不允許從字段 8 的給定字段類型 0x38 到第 8 列的轉換。
有什么線索嗎?
當您的FMT文件中的列與目標表/源表不匹配時,會發生此錯誤,我已經創建了一個中間登台表來正確移動我的數據,這就是導致此問題的原因。 通過使用我的中間登台表的fmt文件解決了該問題。
這個錯誤也發生在我身上。 列中沒有不匹配,但我認為它會引發數據文件中字段 8 和目標表中第 8 列的數據類型不匹配的錯誤。
就我而言,盡管源文件和目標文件的數據類型相同(在我的情況下為日期時間),但我遇到了同樣的問題。 我嘗試了格式化文件和一切,但沒有任何效果。
對我有用的一件事是使用以下查詢創建一個與我的目標表相同的空表。
SELECT * INTO schema.newtable FROM schema.oldtable WHERE 1 = 0;
然后使用插入查詢將數據插入到空表中,然后您可以輕松查詢並使用BCP將數據放入目標表中,沒有任何問題。
同樣在這里。 問題是數據庫中列的順序與 .fmt 文件中列的順序不匹配(特別是數據類型)。
對我來說,努力按照與 .fmt 文件相同的順序刪除和創建表。 我能做的是因為是一張全新的表,沒有數據,沒有關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.