SQL查询并导出?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL查询并导出?相关的知识,希望对你有一定的参考价值。

有一个表 里面有10000条数据
一、我想查询前1000条数据并把这1000条导出为XLS文件
二、我想查询1001至2000之间的数据并导出为XLS文件
这语句应该怎么写
SQL2000 SQL2005各是什么语句 能给出完整的语句吗? 是MSSQL 不是mysql

insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=C:\test.xls',sheet1$) SELECT * FROM 表

这是导出全部表的 导出区间的应该怎么写

BCP用不了
'bcp' 不是内部或外部命令,也不是可运行的程序

还是不行
复制方向必须是 'in'、'out' 或 'format'。

始终没有成功

参考技术A //'bcp' 不是内部或外部命令,也不是可运行的程序 解决方法,运行下面语句
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

mssql 可以用:
EXEC master..xp_cmdshell 'bcp "SELECT top 100 * FROM gwbg.dbo.tsubmit" queryout C:\authors.xls -c -q -S"你是主机名" -U"数据库用户名" -P"数据库密码"'

上面语句中的SELECT top 100 * FROM gwbg.dbo.tsubmit,用以下的语句代替掉,对应你的问题sql语句如下:
1、select top * from 你的数据库名.dbo.你的数据表名
2、Select Top 1000 * From 你的数据库名.dbo.你的数据表名
Where Id>(Select Max(Id) From
(Select Top 1000 Id From 你的数据库名.dbo.你的数据表名 Order By Id Asc) Temp)
Order By Id Asc

上面的语句中,-S"你是主机名" -U"数据库用户名" -P"数据库密码"' 这些参数也要改成对应的。
参考技术B 请问你是什么数据库呢?仅以SQL server 2008为例
1.Select top 1000 * from 表
2.Select top 1000 * from 表 where ID not in (select top 1000 ID from 表)
当然第二条在SQL server 2005以上版本可以用Row_Number来解决,上面的效率比较低。
导出的话,在SQL Server2008 中可以直接连表头一起复制,SQL SERVER 2000也不复杂本回答被提问者采纳
参考技术C mysql可以用
select * from table limit 1001,1000
into outfile 'table.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
在从excel转换。
参考技术D 百度修改次数限制了

一、我想查询前1000条数据并把这1000条导出为XLS文件

查询语句:Select top 1000 * from 表 导出EXCEL没成功!!!!

二、我想查询1001至2000之间的数据并导出为XLS文件

查询语句:没成功! 导出EXCEL没成功!!!!
第5个回答  2009-07-11 在excel的菜单数据-导入外部数据-新建数据库查询里,编辑他们说的select top n from tablename 之类的sql

Python使用MySQL查询数据导出Excel

Python系列之MySQL查询数据导出Excel

最近接到需求,需要通过一条SQL查询出来的id,去过滤另外一条SQL的数据,听起来并不难,但是因为业务原因需要查询很多个环境,而且需要经常查询,所以想到通过python程序来实现,先查出一个SQL数据,然后通过id拼装in查询出数据。

开发环境

  • MySQL 10.1.38-MariaDB-1~bionic
  • Python3.7.8

开发工具

  • PyCharm2018.1
  • SmartGit18.1
  • Navicat15.0.28

先引入一些依赖,主要有pandaspymysql

  • Pandas 是基于 BSD 许可的开源支持库,为 Python 提供了高性能、易使用的数据结构与数据分析工具。
  • Pymysql:PyMySQL是从Python连接到MySQL数据库服务器的接口。 它实现了Python数据库API v2.0,并包含一个纯Python的MySQL客户端库
import pandas as pd
import warnings

import pymysql

先进行数据库配置,需要引入pymysql,封装一个连接数据库的函数



# 数据库配置
MYSQL_HOST_ITEM = '127.0.0.1'
MYSQL_PORT_ITEM = 3306
MYSQL_USER_ITEM = 'root'
MYSQL_PASSWORD_ITEM = '11'
MYSQL_DATABASE_ITEM = 'test'
MYSQL_CHARSET_ITEM = 'utf8'

# 定义连接mysql函数
def connetmysql(host, port, user, password, database, sql, charset='utf8'):
    conn = pymysql.connect(host=host,
                           port=port,
                           user=user,
                           password=password,
                           database=database,
                           charset=charset)
    cursor = conn.cursor()
    sql = """%s""" % sql
    # 遇到时间格式自动解析
    df_mysql = pd.read_sql(sql, conn, parse_dates=True)
    df_mysql.columns = [x.lower() for x in df_mysql.columns]
    cursor.close()
    return df_mysql


先查询出ids


def readPlatformDept():
    sql_script = '''
      SELECT id from t1
    '''
    sql_data = connetmysql(host=MYSQL_HOST_PLATFORM, port=MYSQL_PORT_PLATFORM,
                                            user=MYSQL_USER_PLATFORM,
                                            password=MYSQL_PASSWORD_PLATFORM, sql=sql_script,
                                            database=MYSQL_DATABASE_PLATFORM)
    return sql_data


通过ids 使用in查询

def readItemDeptNum(codes):
    sql_script = '''SELECT
      *
    FROM
        t2
        code in (codes)
        '''.format(codes=', '.join("'" + item + "'" for item in codes))
    # sql_script = sql_script % ','.join(['%s']*len(tongyicodes))
    sql_data = connetmysql(host=MYSQL_HOST_ITEM, port=MYSQL_PORT_ITEM,
                           user=MYSQL_USER_ITEM,
                           password=MYSQL_PASSWORD_ITEM, sql=sql_script,
                           database=MYSQL_DATABASE_ITEM)

    return sql_data

main函数进行调用

if __name__ == "__main__":
    platform_data = readPlatformDept()
    item_data = readItemDepNum(platform_data['id'])
    # 导出Excel
    item_data.to_excel('item_query_excel.xlsx')
import pandas as pd
import warnings

import pymysql

warnings.filterwarnings("ignore")

# Platform配置
MYSQL_HOST_PLATFORM = '127.0.0.1'
MYSQL_PORT_PLATFORM = 3306
MYSQL_USER_PLATFORM = 'root'
MYSQL_PASSWORD_PLATFORM = '111'
MYSQL_DATABASE_PLATFORM = 'test'
MYSQL_CHARSET_PLATFORM = 'utf8'
# ITEM配置
MYSQL_HOST_ITEM = '127.0.0.1'
MYSQL_PORT_ITEM = 33306
MYSQL_USER_ITEM = 'root'
MYSQL_PASSWORD_ITEM = '111'
MYSQL_DATABASE_ITEM = 'item'
MYSQL_CHARSET_ITEM = 'utf8'

# 定义连接mysql函数
def connetmysql(host, port, user, password, database, sql, charset='utf8'):
    conn = pymysql.connect(host=host,
                           port=port,
                           user=user,
                           password=password,
                           database=database,
                           charset=charset)
    cursor = conn.cursor()
    sql = """%s""" % sql
    # 遇到时间格式自动解析
    df_mysql = pd.read_sql(sql, conn, parse_dates=True)
    df_mysql.columns = [x.lower() for x in df_mysql.columns]
    cursor.close()
    return df_mysql


def readPlatformDept():
    sql_script = '''
      SELECT id from t1
    '''
    sql_data = connetmysql(host=MYSQL_HOST_PLATFORM, port=MYSQL_PORT_PLATFORM,
                                            user=MYSQL_USER_PLATFORM,
                                            password=MYSQL_PASSWORD_PLATFORM, sql=sql_script,
                                            database=MYSQL_DATABASE_PLATFORM)
    return sql_data

def readItemDeptNum(codes):
    sql_script = '''SELECT
      *
    FROM
        t2
        code in (codes)
        '''.format(codes=', '.join("'" + item + "'" for item in codes))
    # sql_script = sql_script % ','.join(['%s']*len(tongyicodes))
    sql_data = connetmysql(host=MYSQL_HOST_ITEM, port=MYSQL_PORT_ITEM,
                           user=MYSQL_USER_ITEM,
                           password=MYSQL_PASSWORD_ITEM, sql=sql_script,
                           database=MYSQL_DATABASE_ITEM)

    return sql_data

if __name__ == "__main__":
    platform_data = readPlatformDept()
    item_data = readItemDepNum(platform_data['id'])
    item_data.to_excel('item_query_excel.xlsx')

然后程序就写好了,需要写一个shell脚本启动一些python

python3 start.py

因为是java开发,python并没有学过,所以通过自己摸索,还是可以写出来,对比一下java,觉得python语法有时候确实比较简便,比如要导出Excel,一行代码就可以,然后到linux上部署也比较容易,所以觉得后端程序员掌握一门脚本语言还是有需要的

以上是关于SQL查询并导出?的主要内容,如果未能解决你的问题,请参考以下文章

我可以从 Netezza 导出 SQL 查询结果吗?

pl/sql 把查询结果导出为dmp文件

python实现查询sql后导出到excel并发送邮件

将SQL查询数据导出到Excel并在网络外存储位置excel

mysql 将两个SQL语句查询结果并在一起

使用查询从 Microsoft SQL Server 导出数据到目标数据