对数据库的简单查询 - 条件来自csv

时间:2016-02-17 21:17:03

标签: python mysql sql csv

我一直想知道一件事。是否可以查询数据库以便"其中"子句条件在csv文件中给出?

就像我们说我有数据库并在那里(名称some_table)这样:

id         company_id   created_at
0001c73d   12345        2016-1-1
rewrewrf   45678        2016-2-1
0001c73d   57986        2016-3-1
vcxcv34d   21346        2016-4-1
23215fsf   47896        2016-6-1

我的some.csv看起来像这样:

error_id;company_id 
32rgfvx4;12345     
fds44322;45678     
fdsf46hh;57986    
989jh2f4;21346   
f43452fg;47896     

所以查询可能是这样的:

select company_id, created_at
from some_table
where company_id IN ('some.csv:column2')

明白了吗?

这可以用python完成,或者直接用一些SQL程序(插件/脚本......)或其他东西吗?有任何想法吗?

1 个答案:

答案 0 :(得分:0)

LOAD DATA的SQL解决方案:

创建与CSV数据匹配的临时表:

CREATE TEMPORARY TABLE tmp_errors (
    error_id   VARCHAR(50) NULL DEFAULT NULL,
    company_id VARCHAR(50) NULL DEFAULT NULL,
    INDEX company_id (company_id)
);

将数据加载到临时表中:

LOAD DATA INFILE '/full/path/to/csv/errors.csv'
INTO TABLE tmp_errors
FIELDS TERMINATED BY ';'
IGNORE 1 LINES;

使用临时表过滤您的选择:

select company_id, created_at
from some_table
where company_id IN (select company_id from tmp_errors);

或者

select t.company_id, t.created_at, e.error_id
from some_table t
join tmp_errors e using(company_id);