【问题标题】:Importing text file to database - unwanted space characters将文本文件导入数据库 - 不需要的空格字符
【发布时间】:2017-03-09 05:00:45
【问题描述】:

我在从文本文件(逗号分隔和 " 文本限定符)导入数据时遇到问题。这是我们可以从已有近 30 年历史的系统中进行的唯一导出类型。

问题来自旧系统中的某个人在字段中使用“空格”,在导入期间 SQL 向我显示有某些内容并将单元格显示为“NULL”当您在 Excel 中打开此文本文件时,它显示空单元格(其中是正确的),但与真正的空单元格相比,单元格的行为有所不同。

示例(来自 Notepad++): -> 橙色箭头显示 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 中?更改列什么数据里面的一些设置(忽略空格)...?

【问题讨论】:

    标签: tsql csv ssms sql-server-2014


    【解决方案1】:

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

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

    对于需要清理的许多列进行复制和粘贴,并输入正确的表名和列名。

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

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

    这也会整理“B”和“N”条目。

    【讨论】:

    • 我想将它导入到 SQL 表单文本文件中,其中 "" 或 " " 将由 SQL 导入(没有错误),并且在表中,列/行将为空。 “”的导入方式与“”相同
    • 也许:UPDATE [yourTableName] SET [columnName] = '' WHERE [columnName] = 'NULL';
    • 是的,我不明白你的问题是在导入空格时需要 NULL 还是空字符串。我将编辑我的答案...
    猜你喜欢
    • 2010-11-15
    • 2016-08-22
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    相关资源
    最近更新 更多