【发布时间】:2014-12-02 22:35:42
【问题描述】:
我有一个逗号分隔的 csv 文件,但它有一些带有逗号的地址字段和一个以双引号开头和结尾并在其中包含逗号的描述字段。 sql server 的导入向导只是添加了额外的列,因此该数据扩展到的其他字段的数据类型出现错误。 如果我使用 excel,则可以正确看到该字段,因此我可以导入它,但我想自动导入,所以不想在 excel 中打开每个文件(我有数千个文件)。
我试过powershell
DECLARE @file NVARCHAR(250);
DECLARE @cmd NVARCHAR(255);
SET @file='C:\path\filename'
SET @cmd = 'powershell "Import-csv -path '+@file+'.csv -Delimiter '','' | Export-CSV -path '+@file+'_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
如果有任何其他想法可以让这个文件以良好的格式导入或交换分隔符,我已经尝试将 , 替换为 |但效果一样。
【问题讨论】:
-
使用 FixedWidth 或 RaggedRight 选项生成文件,而不是使用定界符。
-
作为生成文件的人,您可以使用
|管道分隔或您可以使用的格式生成文件。如果不是,那么您目前如何确定以逗号开头的地址和地址的结尾? -
我强烈建议直接打制作此文件的人的脸。
-
是的,我是这么想的。数据有 sdfds,sdfdsf,"sdf,sdfd,",dfd,dfd.dfd 之类的东西,因此导入向导将在每个逗号处分隔 Excel 将接受 " 而不是分隔逗号therafter。我想我需要考虑编写某种批处理脚本来清理它,因为我需要自动化它。
-
乱七八糟的权利不起作用,文件发送给我们。
标签: sql-server import ssis formatting