【问题标题】:Export a Large SQL Database via Query通过查询导出大型 SQL 数据库
【发布时间】:2018-06-13 21:13:23
【问题描述】:

我正在尝试在 Microsoft SQL Server Management Studio 2000 中导出一个数据库。我的数据库非常大,有超过 1,300 个独特的表。

我知道导出向导和复制/粘贴选项,但我正在寻找可以将所有 1,300 个表(或一次至少几百个)导出到单个 csv 或 xls 文件的东西。为每个表复制和粘贴或选择“另存为”会花费很长时间,并且导出向导一次只允许几十个表。

【问题讨论】:

  • 一个包含 1300 个表的 csv/xls 文件会是什么样子?
  • 您真的必须在 SSMS 中执行此操作吗?使用 sqlcmd 或其他脚本处理器编写导出脚本将允许您一次将它们全部导出,并且应该需要更少的时间..
  • @dfundako 一个 Excel 工作簿将包含 1300 张工作表,每张代表一个表格。
  • @JohnDoe 我很乐意看到人们滚动浏览它。此外,excel 工作簿只能做一百万行左右,所以请记住这一点。
  • 如果我问为什么像 Excel 这样的单个文件会有优势,我想我会在这里为大家说话。每个表的 CSV 文件很可能更容易解决问题。仅仅因为您必须访问单个 Excel 文件,并不意味着任务变得更容易,因为您仍然拥有工作表。此外,如果 Excel 达到 1300 张纸的某种限制,我也不会感到惊讶。他们的观点是,在我看来,这样的想法将是高度实验性的,我不会为生产的东西这样做

标签: sql sql-server database export-to-excel export-to-csv


【解决方案1】:

好吧,我不建议您这样做,但如果您迫切需要您所描述的解决方案,这里是:

首先,在数据库上运行这个查询:

    SELECT 'sqlcmd -S . -d '+DB_NAME()+' -E -s, -W -Q "
    SET NOCOUNT ON;
    SELECT * FROM '+table_schema+'.'+TABLE_name+'" > "C:\Temp\'+Table_Name+'.csv"' 
    FROM [INFORMATION_SCHEMA].[TABLES]

您可能想根据自己的方便更改文件夹名称

其次,将所有返回的行复制到Export.batExport.cmd 文件中

第三,运行 Export.bat 文件,在单独的 CSV 文件中获取您需要的 1300 个奇数表

第四,打开一个 cmd 窗口,导航到您的文件所在的文件夹并使用以下命令:

copy *.csv Export.csv

您将拥有一个 Export.csv 文件,其中包含所有表格以及每个表格的标题

【讨论】:

  • 对于 SQL 身份验证,请使用:SELECT 'sqlcmd -S 。 -d '+DB_NAME()+' -U [用户名] -P [密码] -s, -W -Q "SET NOCOUNT ON;SELECT * FROM '+table_schema+'.'+TABLE_name+'" > "C:\Temp \'+Table_Name+'.csv"' FROM [INFORMATION_SCHEMA].[TABLES]
  • 另外,关于你的远程连接问题,你可能不想尝试这个:EXEC sp_configure 'remote access',1 reconfigure
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-10
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    相关资源
    最近更新 更多