2011-04-08 46 views
1

我正在創建BCP IN進程以將管道分隔文件加載到表中。 BCP實用工具給我的錯誤錯誤= [微軟] [SQL Server本機客戶端10.0] [SQL服務器]在XML格式的文件行4列51中的語法錯誤當它運行。是格式文件的第一行,如下所示:SQL Server BCP不接受管道|格式文件中的字段終止符

<?xml version="1.0"?> 
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <RECORD> 
     <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="|", MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS" /> 

錯誤的位置正好處於「|」的FIELD條目。我已經嘗試了單引號和雙引號的各種變體,在管道和管道周圍沒有引號和斜線,但是錯誤始終引發到同一位置。

文件本身是與在該文件的頂部和底部的管分隔符和短頭/拖車記錄數據的只多行。

回答

2

不知道這是否是問題,但終止屬性之後逗號看起來不正確

TERMINATOR =「|」 ,

+0

是的,這是逗號。謝謝。所以習慣於T-SQL中的字段/屬性總是用逗號分隔,顯然這只是我腦海中的一件自動事情。 – BBlake 2011-04-08 14:51:49

2

我無法從問題中知道,但如果這與命令窗口,批處理文件和/或不那麼細微的平面文件操作有關,那麼您可能會被事實擊中管道角色具有非常具體的用途。有許多不起眼的方式「逃」在這些環境中的特殊字符...雖然我從來沒有發現任何固體的文檔回來時,我打這場鬥爭中,隨着時間的推移我決定使用一個或報價的組合,^和&會經常解決我的問題。例如,你可能仔細嘗試以下操作:

<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="^|", MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS" /> 

<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="&|", MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS" /> 

當然,這可能只是@Conrads逗號的問題,在這種情況下,忽略了這一切。

+0

你是天才。我正在努力生成具有自定義分隔符的格式文件,並且您的答案正常工作......謝謝! – Radhi 2016-06-14 05:02:15

相關問題