查询一个SQL文件导入CSV
我有以下信息SQL文件:查询一个SQL文件导入CSV
CREATE TABLE 'people' (
'id' int(11) UNSIGNED NOT NULL,
'email' varchar(255) DEFAULT NULL,
'name' varchar(255) DEFAULT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO 'people' ('id', 'email', 'name') VALUES
(1, '[email protected]', 'john doe'),
(2, '[email protected]', 'jane doe'),
...
(1000, '[email protected]', 'big cat');
我如何可以查询此people.sql文件与文本文件的电子邮件(每行一个)和列表写电子邮件和名称配对到一个新的csv?
假设您已经执行上面的文件并将数据放入mySQL DB中。
您可以使用select命令写入csv文件。
SELECT email, name FROM people INTO OUTFILE 'yourfile.csv' FIELDS
TERMINATED BY ','
在您更新的评论中,您只需执行从人名从文本文件到SQL命令的映射以执行查询。如果你打破这个问题,它将成为两项任务。首先是从给定的列表,这可以这样做选择名称:
SELECT email, name FROM people WHERE name IN ('john', 'alice', 'bob') INTO
OUTFILE 'yourfile.csv' FIELDS TERMINATED BY ','
上面会根据给定的名单产生的映射。但你的第二个需要是从文本文件中获取该列表。一种方法是使用sed
和tr
实用程序将“每行一个名称”转换为“逗号名单”。
cat your-name-list.txt | sed -e "s/\([a-zA-Z0-9\=\.\-]*\)/'\1'/g" | tr "\n" ","
我不知道你的环境是什么。但基本上,你想在上面的SQL中使用这个结果作为查询条件。希望这给你足够的想法。
像这样:
import pymysql.cursors
import pandas as pd
connection = pymysql.connect(host='DB_IP_or_localhost',
user='myUser',
password='myPassword',
db='InnoDB',
cursorclass=pymysql.cursors.DictCursor)
with connection.cursor() as cursor:
sql = "SELECT email, name FROM people"
df = pd.read_sql(sql, connection)
connection.close()
df.to_csv("people.csv", encoding="utf-8")
我如何查询从文件读取的动态名称: 目前有“emailList = text_file.readlines” 所以我想要做一些像“选择电子邮件,从人的电子邮件地址在哪里emailList – konrad
这并不完全清楚你想要什么但据我了解,你应该在最后一行df.to_csv之前修改Pandas dataframe df。使用方法[here](https://*.com/questions/17071871/select-rows-from-a-dataframe - 基于值的在列中的熊猫#17071908)编写'df.loc [df ['email']。isin(emailList)]'子集该列表。或者将您的emailList写入一个在新的数据库表中添加新列,并修改上面的查询以便作为内部联接。如果希望它有帮助,请投票或绿色勾选解决它 – cardamom
您正在使用什么RDBMS? –
我正在使用mySQL – konrad