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

标签 sql sql-server excel

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

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

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

笔记:

  • 我最终会将这些数据导入另一个 SQL Server
  • 目标 SQL Server 位于另一个网络中,因此链接服务器和其他本地选项不可行
  • 我无法访问实际的服务器,因此很难生成备份
  • 最佳答案

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

    您最好导出为 CSV,然而 ,请注意 bcp 中不支持引用标识的 CSV 文件/BULK INSERT直到 SQL Server 2019(当前为预览版)。您可以使用 || 之类的字符但是,要表示分隔的字段,如果您有任何换行符,您也需要选择不同的行分隔符。然而,SSIS 和其他 ETL 工具确实支持引用标识的 CSV 文件;所以你可以使用类似的东西。

    否则,如果您需要导出如此长的值并希望尽可能多地使用 Excel(由于那些糟糕的 ACE 驱动程序,我个人实际上不建议这样做),我建议导出 (n)varchar(MAX)值到其他东西,如文本文件,并使用包含的主键的值命名每个文件。然后,当您导入数据时,您可以检索 (n)varchar(MAX)再次从每个单独的文件中获取值。

    关于sql - 导出包含大文本列的 SQL Server 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54225640/

    相关文章:

    c# - 按条件读取 Excel 文件

    sql - 如何从结束日期获取事件的开始日期和结束日期

    sql - Postgres : get top n occurrences of a value within each group

    php - SQL查询字符串开头最接近的匹配项

    sql-server - SQL Server : "MoSTLy-unique" index

    .net - 如何处理数据库升级

    Excel:计算不连续范围内的相同数值

    mysql - 为什么 MySQL 中 where vs join 子句的性能差异

    sql - 透视表并将结果与​​列的聚合组合

    excel - 如何将值插入非预先指定的数组大小?