使用 WHERE 子句查询 PostgreSQL
Querying PostgreSQL using WHERE clause
我创建了一个名为标记的 table。下面是 .sql 文件。
CREATE TABLE markers (
id SERIAL PRIMARY KEY ,
ip_address varchar(25),
Hostname varchar(255),
Continent varchar(255),
Country varchar(255),
Capital varchar(255),
State varchar (255),
City_Location varchar(255)
);
我有一个包含 IP 地址的文本文件。该文件看起来像这样。
8.8.8.8
23.64.0.0
31.0.0.0
50.22.0.0
54.244.0.0
54.72.0.0
54.80.0.0
属于每个IP地址的信息存储在table中。
如果我想收集 ip 8.8.8.8 的数据,我可以这样写一个查询
SELECT * FROM markers WHERE ip_address='8.8.8.8';
同样我可以为其他 IP 做。但这很耗时,因为我必须为每个 IP 地址编写一个查询。
相反,有什么方法可以让我从文本文件中读取 IP 地址并一次性执行对所有 IP 地址的查询?
如有任何帮助,我们将不胜感激。谢谢。
您可以使用 psql 并发出以下命令(根据您的具体情况定制,阅读 "COPY FROM" 上的 PG 手册):
create temp table ip_addresses (ip_address text);
copy ip_addresses from stdin csv; -- pipe your text file here
select * from markers where ip_address in (select * from ip_addresses);
我创建了一个名为标记的 table。下面是 .sql 文件。
CREATE TABLE markers (
id SERIAL PRIMARY KEY ,
ip_address varchar(25),
Hostname varchar(255),
Continent varchar(255),
Country varchar(255),
Capital varchar(255),
State varchar (255),
City_Location varchar(255)
);
我有一个包含 IP 地址的文本文件。该文件看起来像这样。
8.8.8.8
23.64.0.0
31.0.0.0
50.22.0.0
54.244.0.0
54.72.0.0
54.80.0.0
属于每个IP地址的信息存储在table中。 如果我想收集 ip 8.8.8.8 的数据,我可以这样写一个查询
SELECT * FROM markers WHERE ip_address='8.8.8.8';
同样我可以为其他 IP 做。但这很耗时,因为我必须为每个 IP 地址编写一个查询。
相反,有什么方法可以让我从文本文件中读取 IP 地址并一次性执行对所有 IP 地址的查询?
如有任何帮助,我们将不胜感激。谢谢。
您可以使用 psql 并发出以下命令(根据您的具体情况定制,阅读 "COPY FROM" 上的 PG 手册):
create temp table ip_addresses (ip_address text);
copy ip_addresses from stdin csv; -- pipe your text file here
select * from markers where ip_address in (select * from ip_addresses);