【问题标题】:Contents of text file into SQL Server table, using SSIS使用 SSIS 将文本文件的内容放入 SQL Server 表中
【发布时间】:2017-06-28 11:55:36
【问题描述】:

我有许多平面文本文件,我需要将其内容导入到我之前创建的 SQL Server 表中。我正在使用一个利用导入列任务的 SSIS 包。这可行,但是,它无法保留任何换行符。 只是为了澄清,每个文件上的文本都意味着要导入一列/行,所以如果文件上的文本是

The cat is big  
and the dog is small

在导入 SQL Server 时需要保留换行符。目前,我得到的是:

The cat is big and the dog is small

非常感谢。

编辑:

Paths.txt:

C:\Users\xxxx\Documents\DEV_SANDPIT_TEST_RESOURCES\TextFileToTableField\test1.txt C:\Users\xxxx\Documents\DEV_SANDPIT_TEST_RESOURCES\TextFileToTableField\test2.txt C:\Users\xxxx\Documents\DEV_SANDPIT_TEST_RESOURCES\TextFileToTableField\test3.txt C:\Users\xxxx\Documents\DEV_SANDPIT_TEST_RESOURCES\TextFileToTableField\test4.txt

test1.txt

数据流:

希望对您有所帮助。

【问题讨论】:

  • 您如何检查是否缺少换行符?你用什么来查询数据? SSMS 不会显示换行符。您是如何导入数据的?换行表示新行,显然这不是两行
  • 如果它是一个平面文件,你如何存储换行符?你确定这不仅仅是一些包装,例如查看文件时的excel?您能否编辑您的问题以包含原始输入数据的样本。
  • @PanagiotisKanavos:我将表格中的文本复制并粘贴到记事本++,没有回车。
  • @JeffUK:要导入的文档是我自己使用 Notepad++ 创建的(用于测试目的)。我可以看到 {CR}{LF} 符号。
  • @JeffUK:请查看编辑显示,我的驱动程序文件 paths.txt 工作正常,其中一个测试文件(test1.txt)被导入(没有回车)和屏幕截图数据流。

标签: sql-server ssis etl


【解决方案1】:

默认情况下,SSIS 行分隔符设置为 {CR}{LF}。如果文本文件是在类 unix 系统上生成的,那么行分隔符只有 {LF}。这可能是您在导入时看不到两行的原因之一,因此如果您无法看到实际的分隔符是什么(notepad++ 会做),那么只需将 SSIS 连接管理器中的标题和行分隔符更改为 { LF}。

【讨论】:

  • 我自己创建了文本文件,用于测试目的,使用 Notepad++。我可以看到分隔符是 {CR}{LF}。环境是 Windows。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 2014-09-16
  • 2018-11-20
  • 2010-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多