导出包含大文本列的SQL Server表

时间:2019-01-16 21:26:40

标签: sql sql-server excel

我必须从SQL Server导出一个表,该表包含一列,该列的文本内容较大,最大文本长度可达100,000个字符。

当我将Excel用作导出目标时,我发现此文本的长度受限制并被截断为32,765。

是否有保留长度的导出格式?

注意:

  1. 我最终将这些数据导入另一个SQL Server
  2. 目标SQL Server在另一个网络中,因此链接服务器和其他本地选项不可行
  3. 我无权访问实际服务器,因此很难进行备份

2 个答案:

答案 0 :(得分:3)

Excel specifications and limits中所述,单个Excel单元格中最多可以存储32,767个字符;因此,为什么您的数据被截断。

您最好导出为CSV,但是,请注意,在bcp / BULK INSERT中,直到SQL Server 2019才支持报价标识的CSV文件(当前在预览中)。您可以使用||之类的字符来表示一个以空格分隔的字段,但是,如果有任何换行符,则还需要选择其他行分隔符。但是,SSIS和其他ETL工具 do 支持引号标识的CSV文件;所以你可以使用类似的东西。

否则,如果您需要导出这么长的值并希望尽可能多地使用Excel(由于那些糟糕的ACE驱动程序,我个人不建议这样做),我建议导出(n)varchar(MAX)值转换为其他内容(例如文本文件),并使用您的主键值命名每个文件。然后,当您将数据导入回来时,您可以再次从每个文件中获取(n)varchar(MAX)值。

答案 1 :(得分:-1)

.sql是sql表的最佳格式。是sql表的本机格式,因此您不必协调导出。