2014-10-08 85 views
0

我有一個csv文件,它是用逗號分隔的,但它有一些地址字段,其中包含逗號和一個描述字段,它以雙引號開頭和結尾,並在其中包含逗號。 導入sql服務器的wizrad只是增加了額外的列,因此在數據擴展到的其他領域的數據類型的錯誤。 如果我使用excel字段被正確地看到,我可以導入它,但我想自動執行此導入,所以不想在Excel中打開每個文件(我有數千個)。修復一個csv文件,以便sql服務器可以導入文件

我曾嘗試PowerShell的

DECLARE @file NVARCHAR(250); 
DECLARE @cmd NVARCHAR(255); 
SET @file='C:\path\filename' 
SET @cmd = 'powershell "Import-csv -path '[email protected]+'.csv -Delimiter '','' | Export-CSV -path '[email protected]+'_converted.csv -Delimiter ''|'' -NoType " ' 
EXEC master.dbo.xp_cmdshell 

,但得到的錯誤

output 
    Import-Csv : A positional parameter cannot be found that accepts argument 
    'Premium'. 
    At line:1 char:1 
    + Import-csv -path C:\DWfilestoload\Collect Premium Insolvency Output.csv 
    -Delimit ... 
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     ~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Import-Csv], ParameterBind 
    ingException 
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell 
    .Commands.ImportCsvCommand 

    NULL 

任何其他的想法,以獲得良好的格式文件導入或交換的分隔符,我曾嘗試更換,爲|但其效果相同。

+0

使用FixedWidth或RaggedRight選項生成文件,而不是使用定界符。 – knkarthick24 2014-10-08 10:05:58

+0

正如你生成的文件一樣,你可以使用'|'管道分隔符或可以使用的格式生成文件。如果不是,那麼您目前如何確定逗號地址的起始地址和地址的結尾? – Tak 2014-10-08 13:21:35

+0

我強烈建議您直接在臉上製作此文件的人。 – Zane 2014-10-08 14:07:45

回答

0

例如,您可以添加文本限定符,以便數據值由引號括起來。或者想出一個更復雜的分隔符,比如|〜或者其他一些組合,將會非常少見。

+0

你認爲如果我可以添加一個額外的分隔符,如「或|,它會將數據放在應該顯示的位置。數據看起來像這個示例asdf,asdf,「asdfd,afd,adf」,dfd ..... – 2014-10-08 14:20:54

+0

因爲您可以打開文件,所以文本修飾符更容易排除故障。看起來更清楚,它看起來像這樣:「asdf,asdf」,「asdfd,afd,adf」,「dfd」。管道對於某些數據集也是一個不錯的選擇,請嘗試一下。 – 2014-10-08 15:36:58

+0

我在ssis導入嚮導中找到了一個文本限定符選項,一旦我勾選它,整個雙引號的列就進入正確。 – 2014-11-11 16:22:17

相關問題