将文本文件导入数据库 - 不需要的空格字符

时间:2016-10-26 17:44:53

标签: tsql csv ssms sql-server-2014

我从文本文件(逗号分隔符和“文本限定符”)导入数据时遇到问题。这是我们可以用差不多30年历史的系统进行的唯一导出类型。

问题来自旧系统中使用字段中的“空格”的人,其中在导入SQL期间显示有东西并且显示单元格为“NULL”当您在Excel中打开此文本文件时,它显示空单元格(其中是正确的)但与真实的空细胞相比,细胞表现不同。

示例(来自Notepad ++): example - >橙色箭头显示TAB(确定它们是可读的) 。橙色圆点显示空格

某些Column1数据有额外的空格(“N”和“B”行)但不会导致问题。

Column2 - 前8列很好。 “”文本限定符之间没有任何内容。 第9-13行在TEXT限定符之间有空格。当加载到Excel时,单元格为空并且看起来很好。加载到SQL Server时,它有错误,如果我从Excel文件中加载SQL,那么在这些单元格中显示NULL。试图用Access“清洗”这个,加载好,保存dbo并在SQL中加载这个dbo显示为NULL。

Column3与Column2相同:第1行是好的,第2行和第3行有问题,然后4-8很好地显示X,9到13显示为NULL。

有关如何将其加载到SQL Server的任何想法?在列上更改一些设置里面的数据(忽略空格)......?

1 个答案:

答案 0 :(得分:0)

假设您希望在导入数据后将空格转换为数据库中的空字符串,您可以运行SQL,如

UPDATE [yourTableName]
SET [columnName] = ''
WHERE [columnName] = ' ';

复制并粘贴,但需要对许多列进行清理并将其放入正确的表名和列名中。

如果要在将空格更改为空字符串的同时从字符串的开头和结尾删除空格,可以使用

UPDATE [yourTableName]
SET [columnName] = LTRIM(RTRIM([columnName]))

将整理" B"和" N"条目也是。