Sql Server 数据库表查询结果导出为excel文件

相信大家常常会遇到将SqlServer查询结果导出到Excel的问题。如果导出的次数少,直接“Save Results As...”就是了;

1.1准备好查询语句

1.2选择数据库,启动导入和导出向导

1.3选择数据源

1.4选择目标

1.5

1.6

1.7

1.8

后续步骤不再附图,一直点“下一步”按钮就好。

2、但是当要分别在每个表取样,那就相当麻烦了。今天就为大家提供一个脱离office组件的可以将语句结果导出到Excel的过程,希望会对大家有帮助!

---导出到Excel
---使用说明:
--        1.执行时所连接的服务器决定文件存放在哪个服务器
--        2.远程查询语句中,要加上数据库名
ALTER PROC ExportFile 
     @QuerySql VARCHAR(max) 
    ,@Server VARCHAR(20) 
    ,@User VARCHAR(20) 
    ,@Password VARCHAR(20) 
    ,@FilePath NVARCHAR(100) = 'c:\ExportFile.xls'
AS
    DECLARE @tmp VARCHAR(50) = '[##Table' + CONVERT(VARCHAR(36),NEWID())+']'
    BEGIN TRY
        DECLARE @Sql VARCHAR(max),@DataSource VARCHAR(max)='';
        --判断是否为远程服务器
        IF @Server <> '.' AND @Server <> '127.0.0.1'
            SET @DataSource = 'OPENDATASOURCE(''SQLOLEDB'',''Data Source='+@Server+';User ID='+@User+';Password='+@Password+''').'
        --将结果集导出到指定的数据库
        SET @Sql = REPLACE(@QuerySql,' from ',' into '+@tmp+ ' from ' + @DataSource)
        PRINT @Sql
        EXEC(@Sql)
        
        DECLARE @Columns VARCHAR(max) = '',@Data NVARCHAR(max)=''
        SELECT @Columns = @Columns + ',''' + name +''''--获取列名(xp_cmdshell导出文件没有列名)
            ,@Data = @Data + ',Convert(Nvarchar,[' + name +'])'--将结果集所在的字段更新为nvarchar(避免在列名和数据union的时候类型冲突)
        FROM tempdb.sys.columns WHERE object_id = OBJECT_ID('tempdb..'+@tmp)
        SELECT @Data  = 'SELECT ' + SUBSTRING(@Data,2,LEN(@Data)) + ' FROM ' + @tmp
        SELECT @Columns =  'Select ' + SUBSTRING(@Columns,2,LEN(@Columns))
        --使用xp_cmdshell的bcp命令将数据导出
        EXEC sp_configure 'xp_cmdshell',1
        RECONFIGURE
        DECLARE @cmd NVARCHAR(4000) = 'bcp "' + @Columns+' Union All ' + @Data+'" queryout ' + @FilePath + ' -c -T'
        PRINT @cmd
        exec sys.xp_cmdshell @cmd
        EXEC sp_configure 'xp_cmdshell',0
        RECONFIGURE
        EXEC('DROP TABLE ' + @tmp)
    END TRY
    BEGIN CATCH
        --处理异常
        IF OBJECT_ID('tempdb..'+@tmp) IS NOT NULL
            EXEC('DROP TABLE ' + @tmp)
        EXEC sp_configure 'xp_cmdshell',0
        RECONFIGURE
        
        SELECT ERROR_MESSAGE()
    END CATCH

先不要着急使用,该版本是基于xp_cmdshell的,因为要创建文件,所以要保证你的用户能有文件管理的权限,通常简单点的方法就是将sql server的启动用户设置为本地系统用户

好了,现在我们来执行看看:

--查询分析器连接哪个服务器,文件就在哪个服务器上
--本地导出
EXEC dbo.ExportFile @QuerySql = 'select * from sys.objects', -- varchar(max)
    @Server = '.', -- varchar(20)
    @FilePath = N'c:\objects.xls' -- nvarchar(100)

--远程导出
EXEC dbo.ExportFile @QuerySql = 'select * from master.sys.objects', -- varchar(max)
    @Server = '192.168.1.52', -- varchar(20)
    @User = 'sa', -- varchar(20)
    @Password = 'sa', -- varchar(20)
    @FilePath = N'c:\52objects.xls' -- nvarchar(100)

执行结果如下,显示导出条数,就没有报错,再看看你的C盘,多了2个文件就大功告成了:

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 首先,你需要安装以下Python库: 1.pyodbc:用于连接SQL Server数据库 2.pandas:用于读取和写入Excel文件 然后,你可以使用以下代码来连接SQL Server数据库查询数据: ``` import pyodbc import pandas as pd # 连接字符串 conn_str = 'DRIVER={ODBC Driver 17 for SQL Server};SERVER=your_server;DATABASE=your_database;UID=your_username;PWD=your_password' # 连接数据库 conn = pyodbc.connect(conn_str) # 查询数据 df = pd.read_sql('SELECT * FROM your_table', conn) # 打印查询结果 print(df) # 关闭数据库连接 conn.close() ``` 接下来,你可以使用pandas的to_sql()函数将Excel中的数据更新到SQL Server数据库中: ``` # 读取Excel文件 df = pd.read_excel('your_file.xlsx') # 更新数据库 df.to_sql('your_table', conn, if_exists='replace', index=False) ``` 最后,你可以使用pandas的to_excel()函数将数据库导出Excel文件: ``` # 查询数据 df = pd.read_sql('SELECT * FROM your_table', conn) # 导出Excel文件 df.to_excel('your_file.xlsx', index=False) ``` 希望这些代码能帮到你! ### 回答2: 连接数据库sqlserver可以使用pyodbc模块来实现,首先需要安装pyodbc模块,可以使用以下命令来进行安装: ``` pip install pyodbc ``` 安装完成后,可以使用以下代码来连接sqlserver数据库: ```python import pyodbc # 连接数据库 conn = pyodbc.connect( 'DRIVER={SQL Server};' 'SERVER=服务器地址;' 'DATABASE=数据库名;' 'UID=用户名;' 'PWD=密码;' ) # 创建游标 cursor = conn.cursor() # 执行SQL查询语句 cursor.execute('SELECT * FROM 名') # 获取查询结果 result = cursor.fetchall() # 关闭游标和连接 cursor.close() conn.close() ``` 根据Excel更新数据库,可以使用pandas库来读取Excel数据,并通过SQL语句来更新数据库中的数据。以下是一个示例: ```python import pandas as pd # 读取Excel数据 df = pd.read_excel('文件路径') # 连接数据库并创建游标 conn = pyodbc.connect(连接数据库的代码) cursor = conn.cursor() # 遍历Excel数据,执行更新数据库的操作 for index, row in df.iterrows(): sql = "UPDATE 名 SET 列名1='{}', 列名2='{}' WHERE 条件列='{}'".format(row['列名1'], row['列名2'], row['条件列']) cursor.execute(sql) conn.commit() # 关闭游标和连接 cursor.close() conn.close() ``` 导出Excel可以使用pandas库的`to_excel`方法来实现,以下是一个示例: ```python # 连接数据库并创建游标 conn = pyodbc.connect(连接数据库的代码) cursor = conn.cursor() # 执行SQL查询语句 cursor.execute('SELECT * FROM 名') # 获取查询结果 result = cursor.fetchall() # 将结果转为DataFrame df = pd.DataFrame(result, columns=['列名1', '列名2', ...]) # 将DataFrame写入Excel df.to_excel('输出文件路径', index=False) # 关闭游标和连接 cursor.close() conn.close() ``` 以上是使用Python连接数据库sqlserver,根据Excel更新数据库,并导出Excel的简单示例代码。具体的名、列名、条件等需要根据实际情况进行替换。 ### 回答3: 要连接SQL Server数据库并根据Excel更新数据库,并导出Excel,可以使用Python中的PyODBC和Pandas库。 首先,需要安装PyODBC库和Pandas库。可以使用以下命令进行安装: ``` pip install pyodbc pip install pandas ``` 接下来,使用以下代码连接到SQL Server数据库: ```python import pyodbc # 连接到SQL Server数据库 conn = pyodbc.connect("Driver={SQL Server Native Client 11.0};" "Server=服务器;" "Database=数据库名称;" "UID=用户名;" "PWD=密码;") # 创建游标 cursor = conn.cursor() ``` 然后,使用Pandas库将Excel数据加载到数据框中: ```python import pandas as pd # 读取Excel数据为数据框 df = pd.read_excel('文件路径.xlsx') ``` 接下来,可以使用Pandas库提供的方法将数据框中的数据更新到数据库中: ```python # 将数据框中的数据更新到数据库 for index, row in df.iterrows(): cursor.execute("UPDATE 名 SET 列名1 = ?, 列名2 = ? WHERE 条件", row['列名1'], row['列名2']) conn.commit() ``` 最后,可以使用Pandas库将更新后的数据库导出Excel文件: ```python # 导出Excel文件 df_updated = pd.read_sql('SELECT * FROM 名', conn) df_updated.to_excel('导出文件路径.xlsx', index=False) ``` 以上是连接数据库SQL Server,根据Excel更新数据库,并导出Excel的Python代码示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值