【问题标题】:SQL Server Management Studio 2012 - Export/Import data from/to tableSQL Server Management Studio 2012 - 从表中导出/导入数据
【发布时间】:2012-07-06 14:24:14
【问题描述】:

我有超过 3 000 000 行的表格。我尝试使用 SQL Server Management Studio Export data 功能手动将其中的数据导出到 Excel,但遇到了几个问题:

  • 创建 .txt 文件时手动复制和粘贴数据(这是多次,因为如果您从 SQL Server Management Studio 复制所有行,则会引发内存不足错误)我无法打开它任何文本编辑器并复制行;

  • Export data 转 Excel 不起作用,因为 Excel 不支持这么多行

最后,使用Export data 功能,我创建了一个.sql 文件,但它是1.5 GB,我无法再次在SQL Server Management Studio 中打开它。

有没有办法用Import data 功能导入它,或者其他更聪明的方法来备份我的表信息,然后在需要时再次导入它?

提前致谢。

【问题讨论】:

    标签: sql sql-server tsql import export


    【解决方案1】:

    我不太确定我是否理解您的要求(我不知道您是否需要将数据导出到 excel 或者您想要进行某种备份)。

    为了从单个表中导出数据,您可以使用Bulk Copy Tool,它允许您从单个表中导出数据并将其导出/导入到文件中。您还可以使用自定义查询来导出数据。

    重要的是,这不会生成 Excel 文件,而是另一种格式。您可以使用它来将数据从一个数据库移动到另一个数据库(在这两种情况下都必须是 MS SQL)。

    示例: 创建格式文件:

    Bcp [TABLE_TO_EXPORT] 格式 "[EXPORT_FILE]" -n -f "[ FORMAT_FILE]" -S [SERVER] -E -T -a 65535

    从表中导出所有数据:

    bcp [TABLE_TO_EXPORT] out "[EXPORT_FILE]" -f "[FORMAT_FILE]" -S [SERVER] -E -T -a 65535

    导入之前导出的数据:

    bcp [TABLE_TO_EXPORT] in [EXPORT_FILE]" -f "[FORMAT_FILE] " -S [SERVER] -E -T -a 65535

    我将 hte 导出/导入操作的输出重定向到日志文件(通过在命令末尾附加“> mylogfile.log”广告) - 如果您要导出大量数据,这会有所帮助。

    【讨论】:

    • 感谢您的快速回复。我已阅读 BCP 实用程序并启用它。当我尝试进行导出时,它对我说“访问被拒绝”。我已经读过,如果您使用 SA 帐户登录,它应该可以工作,但我再次收到“访问被拒绝”。你遇到过同样的问题吗?
    • 不幸的是,我不知道您的用户帐户在服务器上的权限,也不知道数据库的权限。这可能是导出文件/目录的文件权限问题,或其他问题。你看过msdn链接了吗?也许您需要在命令行中添加另一个选项(例如用户名/密码 - 取决于您的配置)。如果这不起作用 - 也许您可以发布更多信息(确切的错误消息,您正在使用的命令等)
    • 是的,我查看了链接。我也使用用户和密码选项。我的帐户是具有完全权限的管理员。
    • 您是直接在数据库服务器上执行 bcp 吗?请发布完整的错误消息。您是否尝试通过“以管理员身份运行”执行命令行?
    • 非常感谢您的帮助。当我通过“以管理员身份运行”运行命令行时,它成功导出了数据。然后我也成功地将它导入回来。这确实是导入/导出数据的更快方法。
    【解决方案2】:

    这是一种不使用 bcp 的方法:

    1. 在文件中导出架构和数据

      • 使用 ssms 向导 数据库>>任务>>生成脚本...>>选择表>>选择数据库模型和模式
      • 保存 SQL 文件(可能很大)
      • 在其他服务器上传输 SQL 文件
    2. 将数据分成几个文件

      • 使用 textfilesplitter 之类的程序将文件拆分为较小的文件并拆分为 10 000 行的文件(因此每个文件不会太大)
      • 将所有文件放在同一个文件夹中,别无其他
    3. 在第二个服务器中导入数据

      • 在同一文件夹中创建一个 .bat 文件,命名为 execFiles.bat
      • 您可能需要检查表架构以禁用第一个文件中的标识,您可以在导入完成后添加。
      • 这将针对服务器和数据库执行文件夹中的所有文件,-f 定义应该使用 Unicode 文本编码来处理重音:

        for %%G in (*.sql) do sqlcmd /S ServerName /d DatabaseName -E -i"%%G" -f 65001 pause

    【讨论】:

      猜你喜欢
      • 2013-07-02
      • 2010-11-10
      • 1970-01-01
      • 2019-04-05
      • 2011-11-18
      • 1970-01-01
      • 2015-08-27
      • 2015-04-10
      • 2010-12-12
      相关资源
      最近更新 更多