【问题标题】:Download data into SQL Server将数据下载到 SQL Server
【发布时间】:2016-09-09 08:54:26
【问题描述】:

我有一个没有任何扩展名的文件,我需要将数据下载到 SQL Server 表中。

这是在记事本中打开一个字符串的示例:

7600    20160701    20160701    20160630    20160630    20160630    ZSO ### 5501    850170371

在 Excel 中,它看起来像一个没有任何空格的字符串。

当我没有逗号或类似的东西时,如何在列上打断字符串?

【问题讨论】:

  • 是用TAB分隔的吧?
  • 显示更多数据... 您是否在每行末尾有一个 CR/LF 字符来分隔记录,或者它只是一个巨大的行? @dean 的问题也值得回答。
  • 当我从文件中复制该行并粘贴它时,看起来它有标签,但我不确定它们是否真的存在。我在行尾没有任何字符。每条记录都以 7600 开头并以 RUB 结尾,仅此而已。
  • SQL Server 的导入数据任务允许您指定列分隔符(可能是制表符?)或使用固定宽度的列。

标签: sql-server flat-file


【解决方案1】:

我建议您检查 SQL Server 导入向导,它足够聪明,可以为您找出分隔符。不过,您可能需要验证列宽和类型。

如果这是一项常规活动,您可以创建一个 SSIS 包(您实际上可以在导入-导出向导结束时创建 SSIS 包)并可以实现高级错误处理功能。

如果您只是在寻找 TSQL 解决方案,请发布更多数据/规范,以便我们进行处理。可以通过以下任何一种方式完成:

【讨论】:

    【解决方案2】:

    对于像这样具有小数据集和可变数据质量的一次性任务,我个人的偏好是使用 Excel 创建一个可以在 SSMS 中运行的脚本。

    为此,我将执行以下步骤:

    1. 使用 Excel 的“文本到列”拆分数据
      • 这里有与 SQL 导入向导类似的选项,通过非常直观和直接的界面来计算列(固定宽度/分隔符/...)
    2. 复制并粘贴特殊的转置以将数据移动到行中
      • 可能会进行一些手动数据清理
    3. 添加公式以“脚本化”值
    4. 创建和存储脚本

    【讨论】:

      【解决方案3】:

      您可以使用 Excel(在德语中有一个函数,它被称为(spalten 中的文本,应该类似于“行中的文本”)或 LibreOffice Calc(它应该提供一个向导)来导入数据。 如果在其中一个程序中看起来不错,请将其保存为 csv 或另一种可以导入 MSSQL 的格式。

      【讨论】:

      • ETL 是一个完整的学科领域。所有数据库都有导入和转换数据的工具。您不需要使用外部工具来导入简单的分隔或固定长度的文件,甚至还有一个向导。此外,您所说的 csv 可能有很多变体和特定于语言环境的怪事,需要特殊处理
      • 此外,如果您打开文件,Excel 和 Calc 都使用向导,但如果使用区域设置默认值你双击一个文件。两者都容易受到本地化问题的影响
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 2013-02-08
      相关资源
      最近更新 更多