2012-07-06 212 views
2

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

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

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

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

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

在此先感谢。

回答

3

我不太清楚,如果我理解你的要求(我不知道你是否需要导出你的数据到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]去 “[EXPORT_FILE]” -f “[FORMAT_FILE]” -S [SERVER] -E -T -a 65535

导入先前导出的数据:

BCP [TABLE_TO_EXPORT]在[EXPORT_FILE]” -f “[FORMAT_FILE]” -S [SERVER] -E -T -a 65535

我将输出从导出/导入操作重定向到日志文件(通过追加“> mylogfile.log”和命令的末尾) - 这有助于导出大量数据。

+0

感谢您的快速回复。我已阅读关于BCP实用程序并启用它。当我尝试导出时,它对我说“拒绝访问”。我已经阅读过,如果你使用SA帐户登录,它应该可以工作,但我再次获得“拒绝访问”。你遇到过同样的问题吗? – gotqn 2012-07-06 07:28:08

+0

不幸的是,我不知道你的Useraccount在服务器上拥有的许可,也不知道数据库的权限。这可能是导出文件/目录上的Filepermission问题,或其他问题。你看看msdn链接吗?也许你需要添加另一个选项到命令行(如用户名/密码 - 取决于你的配置)。如果这不起作用 - 也许你可以发布更多的信息(确切的errormessage,你正在使用的命令等) – 2012-07-06 07:57:00

+0

是的,我已经看过槽的链接。我也使用用户和密码选项。我的帐户是拥有完整权限的管理员。 – gotqn 2012-07-06 09:37:50

0

这里又未BCP的一种方式:

  1. 出口的模式和数据文件中的

    • 使用SSMS向导 数据库>> >>任务生成脚本... >>选择表格>>选择db模型和模式
    • 保存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

相关问题