这是我的输入:
csvsql -d ";" --query "SELECT ID_PROPOSTA FROM acomp_obras_contratos_medicoes_modulo_empresas WHERE MONTH(DATA_INICIO_MEDICAO_OBJETO_ACOMPANHAMENTO_OBRA) LIKE 10 AND YEAR(DATA_INICIO_MEDICAO_OBJETO_ACOMPANHAMENTO_OBRA) LIKE 2010" acomp_obras_contratos_medicoes_modulo_empresas.csv
这是错误:
OperationalError: (sqlite3.OperationalError) no such function: MONTH
显然,csvsql 使用 sqlite 而不是 mysql,但由于此错误,我无法强制 csvsql 使用带有“--dialect mysql”标志的 mysql:
csvsql: error: The --dialect option is only valid when neither --db nor --query are specified.
使用 csvkit 1.5.0 进行测试:
% cat acomp_obras_contratos_medicoes_modulo_empresas.csv
ID_PROPOSTA;DATA_INICIO_MEDICAO_OBJETO_ACOMPANHAMENTO_OBRA
123;2010-10-01
456;2010-11-01
789;2012-10-01
% csvsql -d ';' --query "select id_proposta from acomp_obras_contratos_medicoes_modulo_empresas
where strftime('%Y%m', data_inicio_medicao_objeto_acompanhamento_obra)
= '201010'" \
acomp_obras_contratos_medicoes_modulo_empresas.csv
ID_PROPOSTA
123.0