查询CSV文件/常规数据库问题

查询CSV文件/常规数据库问题,csv,Csv,好的,所以我对数据库一般来说是个新手。我理解他们背后的基本理论,并在这里和那里构建了奇怪的访问数据库 我一直在努力学习的一件事是SQL查询如何访问数据库的细节 因此,假设您有一个场景,其中LAN服务器上有一个数据库(假设是MS Access)。您可以从客户端计算机对其运行一些SQL查询或其他查询。客户机是否必须下载整个数据库才能运行所述查询(即使查询结果只有一行)?或者,它是否以某种方式获得了它想要的数据?服务器必须运行任何东西才能做到这一点吗?无法完全理解客户机如何在不需要服务器执行某些工作的

好的,所以我对数据库一般来说是个新手。我理解他们背后的基本理论,并在这里和那里构建了奇怪的访问数据库

我一直在努力学习的一件事是SQL查询如何访问数据库的细节

因此,假设您有一个场景,其中LAN服务器上有一个数据库(假设是MS Access)。您可以从客户端计算机对其运行一些SQL查询或其他查询。客户机是否必须下载整个数据库才能运行所述查询(即使查询结果只有一行)?或者,它是否以某种方式获得了它想要的数据?服务器必须运行任何东西才能做到这一点吗?无法完全理解客户机如何在不需要服务器执行某些工作的情况下仅获取查询结果

我在谷歌上看到了两个相互矛盾的故事

接下来是下一个问题(可能已经得到了回答):如果你可以查询数据库而不必获取整个该死的东西,并且服务器不运行任何其他软件,那么CSV也可以这样做吗?若否,原因为何

我提出这个问题的原因是,我正在为需要与某种db或CSV文件进行通信的移动设备开发一个应用程序,它将以相当高的速度更新记录(条形码扫描),所以我不想让网络陷入停顿(这是一个缓慢的[插入相关侮辱])。从设备到服务器的数据传输越少越好


提前感谢

各种SQL server只是一个服务器。它是一个监听客户端查询并返回响应的程序。这不仅仅是它的数据

CSV文件或“平面文件”只是数据。它无法自行响应查询

因此,当您在网络上时,查询将被发送到服务器,服务器负责查找适当的结果。打开平面文件时,您正在使用网络和/或文件系统读取/写入整个文件

编辑以添加有关特定用法的注释。您可能需要使用数据库引擎,因为查询将是最少的网络流量。例如,当您扫描条形码时,您的查询可能与以下文本一样简单:

INSERT INTO barcode_table ('code', 'scan_date', 'user') VALUES ('1234567890', '2011-01-24 12:00:00', '1');
上面的字符串由数据库引擎处理,代码(以及任何相关的支持数据)被存储。应用程序无需打开文件、向其追加数据并关闭文件。一旦文件变得很大,后者就会变得非常慢,并且并发性可能会成为许多用户访问它的问题

如果应用程序需要向用户显示一些数据,它将以相同的方式请求特定信息,服务器将生成相关结果。因此,设想一个场景,在该场景中,用户需要一个与某个过滤器匹配的产品列表。如果您的产品是书籍,假设用户请求特定作者的列表:

SELECT products.title, barcode_table.code
FROM products, barcode_table
WHERE products.author = 'Anders Hejlsberg'
ORDER BY products.title ASC;
在本例中,只有那些产品名称及其条形码从服务器发送到移动应用程序


希望这些示例有助于说明如何使用某种结构数据库引擎,而不是使用平面文件。然而,数据库的具体风格和实现本身是另一个问题。

一般来说,关系数据库存储在远程服务器上,您可以通过客户端接口访问它们。每个数据库供应商都有您将安装在远程计算机上的软件,该软件允许您访问服务器上的数据库。执行查询时,不会将整个数据库发送回客户机,尽管如果您不注意如何构造查询,它可能会发送非常大的结果集。一般来说,流程如下所示:

  • 数据库服务器侦听要连接的客户端
  • 客户端连接并发出SQL语句 将命令发送到数据库
  • 数据库构建一个查询计划来 找出如何得到结果
  • 计划执行完毕,结果如何 发送回客户端

CSV只是一种文件格式,不像关系数据库那样是一个功能齐全的平台。

是的,这似乎就是我所认为的情况。因此,对于服务器上的.mdb文件(Access)(服务器没有运行任何东西,只是托管文件),在这种情况下,客户端会下载整个文件吗?谢谢,我想答案是否定的。访问文件是按页面组织的,因此读取表(或表单)定义、检索部分索引或部分数据只需要随机访问MDB文件的一部分。啊,好的。我猜除了一个合适的数据库之外,这是不可能实现的?我想我要问的真正问题是我是否可以访问这样的CSV。既然CSV文件非常容易解析,为什么不将文件解析到真正的关系数据库中并以这种方式使用它呢?我想问题真的是哪个RDB…SQL Server似乎有点过度(而且我不知道如何使用它)如前所述,访问权在窗口之外。这还剩下什么?我知道了如何使用SQL,但无论如何还是要感谢这篇文章,它让我的头脑更加清醒了。