2011-05-13 37 views
0

正試圖使用​​bcp實用程序設置.fmt文件。我已經能夠成功從而之前創建這個(使用該數據被輸出到輸入表):如何創建.fmt文件,並將數據從混合輸入文件導出到多個表中

BCP cmsDatabase.dbo.Table1格式NUL -T -c -f Table1Format.fmt

9.0 
3 
1  SQLCHAR  0  12  "\t"  1  Col1_Table1  "" 
2  SQLCHAR  0  100  "\t"  2  Col2_Table1  SQL_Latin1_General_CP1_CI_AS 
3  SQLCHAR  0  0  "\t"  3  Col3_Table1  SQL_Latin1_General_CP1_CI_AS 

表1從它被創造: Col1_Table1 INT(主鍵) Col2_Table1爲nvarchar(50) Col3_Table1 NVAR

現在我面臨的一個問題。我有不會被直接導入到一個表中的數據輸入的.txt/.csv文件(分隔的平面文件),它進入許多表(AND,一個直接進入行,其他的數據需要輸入到表2列),示例輸入文件的數據:

"Col1_Table1x" "Col2_Table1x" "Col3_Table1x" "Col1_Table2x, Col1_Table2y, Col1_Table2z" 

更新: 在上述文件中,值必須進入:

Col1_Tablex -> Col1_Table1 column of Table1 
Col2_Tablex -> Col2_Table1 column of Table1 
Col3_Table1x -> Col3_Table1 column of Table1 

表1:

Col1_Table1 Col2_Table1 Col3_Table1 
------------------------------------------- 
Col1_Table1x Col2_Table1x Col3_Table1x 

到這裏,我可以讓它工作。

我試圖弄清楚:

「Col1_Table2,Col1_Table2,Col1_Table2,.....」 - >多個記錄放置在表2,用逗號分隔值填充Col_Table2 ,以及Col1_Table1作爲外鍵的 。

即表2應該有

Col1_Table1  Col1_Table2 
---------------------------------------------- 
    Col1_Table1x Col1_Table2x 
    Col1_Table1x Col1_Table2y 
    Col1_Table1x Col1_Table2z 

其中Col1_Table2需要去爲行成表2(並且是逗號分隔),並Col1_Table1是表2的外鍵,因此需要被複制了。

有沒有辦法創建一個.fmt文件,允許這種混合輸入被複制過來?

其他細節:每次我需要從這個輸入文件加載了表,我可以截斷所有舊數據並重新填充。任何列可以有特殊字符,如<,「,&等,所以有辦法處理呢?

回答

1

如果數據量是小/中等,那麼你可以簡單地將數據導入登臺表並導入到兩個表在不同的步驟。

您也可以通過使用兩種不同格式的文件,並利用它們插入到不同的表從其它表跳過列跳過數據文件中幾列。

http://msdn.microsoft.com/en-us/library/ms187908.aspx

即將到特殊字符,解決此問題的唯一好方法是使用多列分隔符。我在音樂行業,所以有時我用3個不同的列分隔符正確導入數據。

+0

謝謝你的鏈接。我喜歡將數據放入用於導入其他兩個實際表的臨時表中。我將只提供一個輸入文件,所以我主要關心的是,是否有辦法將「Col1_Table2,Col1_Table2,...」中的所有數據分別放入不同的行/另一個表中?我也可以創建兩個格式文件,一個是問題中提到的,另一個是基於另一個表格。是否仍然有辦法知道哪些數據需要放入哪些表中? – 2011-05-13 17:59:04

+0

>>是否還有辦法知道哪些數據需要進入哪些表?你需要確定這些信息,我們不能以編程方式進行。 – 2011-05-13 18:51:40

+0

我已經編輯了我的問題一點點文件輸入是相同的,table2行進來逗號分隔和其他是tab/quotation分開。 – 2011-05-13 21:01:58

相關問題