最近在学习搭建一个知识图谱,分享一个数据导入到
MySQL的方式。
txt文件数据样例:
方法一: 利用sqlyog工具
- 创建表,例如:创建了表testkgphone
- 查询语句见下面的代码块,F9执行。
LOAD DATA LOCAL INFILE 'H:\\BaiduNetdisk\\贪心学院知识图谱风控\\任务18 作业1数据和说明\\hw1\\phone.txt'
INTO TABLE testkgphone
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
- 查看结果
注:如果出现中文乱码问题,记得看编码规范是否异常
各种字符参数应统一为utf8时.
可以进行单个设置:
SET character_set_client = utf8 ;
SET character_set_connection = utf8 ;
SET character_set_database = utf8 ;
SET character_set_results = utf8 ;
SET character_set_server = utf8 ;
SET collation_connection = utf8 ;
SET collation_database = utf8 ;
SET collation_server = utf8 ;
再使用上面步骤2 的代码块
这样再导入的时候就OK了
方法二:python连接mysql导入text数据
要是90多万条数据还挺慢的,不过能用,代码如下,以后慢慢优化吧~
import pymysql
conn = pymysql.connect(host="ip地址", port=3306, user="root", passwd="密码", db="pytest")
# 使用cursor()方法获取操作游标
cursor = conn.cursor()
#第一步:创建表
sql_table1 = """CREATE TABLE Phone
(
Id INT primary key AUTO_INCREMENT,
from_phone VARCHAR(255),
to_phone VARCHAR(255),
start_time DATETIME,
end_time DATETIME
)ENGINE=InnoDB DEFAULT CHARSET=utf8;"""#utf8防止出现乱码,id为自增主键
cursor.execute("DROP TABLE IF EXISTS Phone")
cursor.execute(sql_table1)
#第二步导入数据
#通过open()方法以只读的方式打开文件,编码格式为UTF-8
file = open("H:\BaiduNetdisk\贪心学院知识图谱风控\任务18 作业1数据和说明\hw1\phone1.txt", 'r', encoding='UTF-8')
lines = file.readlines()
#如果lines为真,执行循环的内容
data = cursor.fetchall()
if lines:
for line in lines: #lines是一个列表,列表中的每隔元素就是txt文件中的一行数据
# print(line) #这一步是为了验证是否能如期获取到列表
line = line.strip('\n').split(',') #strip()去掉字符串头尾的符号,通过","将每行数据拆分
a = line[0] #我的txt文件中每行三个元素,所以将三个元素分别赋值给变量abc
b = line[1]
c = line[2]
d = line[3]
# print(a,b,c,d)
sql = "insert into Phone(from_phone,to_phone,start_time ,end_time) values(%s,%s,%s,%s)" #数据库数据插入语句
param = (a, b, c, d) #param参数是要输入的数据
cursor.execute(sql, param) #cursor.execute(sql,param)方法执行插入语句
conn.commit() #提交
file.close() #关闭所有的连接
cursor.close()
conn.close()