热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

筛选和分组:SQL、Linux脚本与Ruby之比较

文章标题:筛选和分组:SQL、Linux脚本与Ruby之比较。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

    现今,大多数人会将软件开发视为一项创造性甚至艺术性的工作,目标是使开发出的软件不仅功能强大,而且在某些方面出色、有用且设计良好。然而,IT 专业人员不时被要求扮演“执行者”的角色,这更类似于爵士音乐家。一个出色的爵士音乐家可以选择符合给定环境的正确音符 — 并使它看上去很流畅。通过彻底理解脚本技术,您可以同样快速地创建简单的命令、语句或程序,以便有效地解决业务或技术问题。它们提供的服务非常有价值并且很简单。

    针对 Linux 的 Oracle 数据库版本在 1998 年发布,自那以后,陆续推出了可以在 Linux 上使用的其他 Oracle 应用产品和中间件。随着 Oracle 坚不可摧 Linux 支持计划的实行,许多组织将他们的 Oracle 安装移植到了 Linux 平台。这些变化导致越来越多的 DBA 需要调查资源(如脚本),以便管理在 Linux 上运行的服务器。

    在前面的文章中,我说过,系统管理员与 DBA 之间在职责方面存在一个传统的差异,但实际情况中,这个差异并不明显。公司会雇佣一些可以解决数据库级以及操作系统级问题的员工。至少,安装 Oracle 数据库软件的职责要求 DBA 与底层操作系统进行交互。

    即使出现了许多新的脚本语言,管理员仍然需要使用 shell 脚本作为可在所有系统上使用的技术。现有脚本已经开发并在许多服务器上运行了数年 — 这些脚本需要维护和升级。Shell 脚本是一个针对各类 IT 专业人员的非常有用的工具。

    在本文中,您将了解 Oracle SQL、Linux 操作系统命令和脚本的一些可转换的常用概念。特别是,本文将说明如何使用“面向集的”方法看待与需要分组、排序和筛选的数据集相关的问题。这些操作对于了解 SQL 的人员来说很熟悉,但在使用 Linux 命令和/或 Ruby 编程语言时,通常也需要这些操作。

    我不会尝试以任何严谨的方式讨论数学集合论,而是在整个范围内查找人类语言中存在的所有模糊边界(以及典型业务问题)。Oracle SQL 提供了比脚本更纯粹的数据集操作方式:每一列都包含已定义类型的域,并且逻辑数据独立于底层物理表示进行处理。正常情况下,从查询返回的数据与 shell 命令的输出不同。以下内容针对教学目的,即,为了解 SQL 的人员提供他们所熟知的类比,以便在需要时利用他们解决问题的能力在数据库外部工作。本文将提供一个解决问题的不同角度,并鼓励您钻研新的、不熟悉的领域。

    数据集SQL 不是过程语言。相反,它用于查看、汇总或操作数据集。然而,执行某些 shell 命令会导致输出被写入。这些结果也可以解释为一组数据。它可能不是特别结构化的数据集,但大多数情况下都是。许多不同的 shell 命令会将一组数据作为输出,但以下示例将使用 ls 命令,大多数用户应该熟悉这个命令。后续命令将修改给定目录中的文件列表。首先是一个简单的长列表命令:

ls -l   
最终输出取决于您的目录。假设结果如下:
total 60K
-rw-r--r--  1 root   dba 1.7K May 13 09:02 xe_s000_2072.trc
-rw-r--r--  1 cas    dba  929 Apr 28 22:21 xe_smon_3664.trc
-rw-r--r--  1 cas    dba  794 Apr 26 17:19 xe_smon_3676.trc
-rw-r--r--  1 oracle dba  792 Apr 23 21:52 xe_smon_2120.trc
-rw-r--r--  1 oracle dba  794 Apr 19 17:37 xe_smon_3364.trc
-rw-r--r--  1 root   dba 5.5K Jun 20  2006 xe_s000_2412.trc
-rw-r--r--  1 cas    dba  790 May 25  2006 xe_smon_540.trc
第一列包含一组目录权限。第二列显示链接数量。第三列指明所有者。第四列表示相关组。第五列指出文件大小(以字节为单位)。第六列是文件创建日期(会导致某些问题;如下所示)。第七列指出文件名称。

可以使用一个表来容纳这些数据:

FILE_PERMISSIONS NUM_LINKS FILE_OWNER FILE_GROUP SIZE CREATED_AT FILE_NAME
-rw-r--r-- 1 root dba 1675 May 13 09:02 xe_s000_2072.trc
-rw-r--r-- 1 root dba 5532 Jun 20 2006 xe_s000_2412.trc
-rw-r--r-- 1 oracle dba 792 Apr 23 21:52 xe_smon_2120.trc
-rw-r--r-- 1 oracle dba 794 Apr 19 17:37 xe_smon_3364.trc
-rw-r--r-- 1 cas Dba 929 Apr 28 22:21 xe_smon_3664.trc
-rw-r--r-- 1 cas dba 794 Apr 26 17:19 xe_smon_3676.trc
-rw-r--r-- 1 cas dba 790 May 25 2006 xe_smon_540.trc

后面的示例将构建这个结果的“虚构表”(ls -l 命令的输出已在上面列出),以说明如何限制、排序和汇总数据。

注意事项
至少对于查看数据的人来说,这个数据集的结构很明显。然而,请注意第一行与结构不符:total 60K。这一开始就显示了方法的局限性;某些输出不是结构化数据的一部分。

要整理这组数据,您可以将输出重定向到一个文件,随后可以通过后续命令操作这个文件。

ls -l > test.txt
然后,您可以使用喜欢的文本编辑器编辑该文件,并删除第一行。您可以调整数据,直到满足您的结构化要求。结构化程度取决于您的目标对象。可读报表不同于要加载到 Oracle 表中的文件。

如果这个手动中间步骤不是一个选项(或破坏了您的自动化体验),请考虑使用 grep -v 选项(本文稍后有述)传送输出。该命令用于排除匹配给定模式的行。

您可能还注意到,日期格式不一致。除了以几个不同的格式显示之外,也不能进行临时排序,并且还包含了空格。这再一次展示了数据库存储类型化数据的有用性。Oracle 提供了大量函数,用于操作和排序日期。在数据库中,将日期作为结构化数据通常更易于操作。

如果必须在命令行按日期排序,您可能还需要 -t 或类似选项,以便在传送给后续命令之前进行此排序。

[1] [2] [3] [4] 下一页


推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文详细介绍了Vim编辑器中的三种模式(命令模式、末行模式和编辑模式)以及它们之间的操作区别和切换方法。Vim编辑器凭借其多种命令快捷键和高效率的操作方式,得到了广大厂商和用户的认可。对于想要高效操作文本的用户来说,了解这些模式的使用方法是必不可少的。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 如何更改电脑系统的自动校时服务器地址?
    本文介绍了如何通过注册表编辑器更改电脑系统的自动校时服务器地址。通过修改注册表中的数值数据或新建字符串数值的方式,可以将默认的时钟同步服务器地址更改为自己所需要的域名或IP地址。详细步骤包括双击时间区域,点击internet时间,勾选自动校正域名设置定时等操作。 ... [详细]
  • OCI连接MySQL_PLSQL Developer连接远程数据库OCI客户端安装方法
    本文介绍了使用OCI客户端连接MySQL和PLSQL Developer连接远程数据库的安装方法,避免了在本地安装Oracle数据库或类似的开发套件的麻烦,同时解决了PLSQL Dev连接远程Oracle时的配置问题。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
author-avatar
米粒多可爱几_642
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有