mysql导入数据一则
其实很简单的,但是对于摸着石头过河的我来说调试了好几个小时AMTF,百度里全是大坑,咕咚就掉进去了
sql 语句执行错误 就报个错误号,根本就不告诉你哪里错了什么原因错的,应该怎么改
好了,目标:将文本文件的数据 导入mysql数据表
终实现:
f = open('商务英语词汇 copy.txt',encoding = 'utf-8')
lst=[]
for field in f:
try:
ename=field.split("=").strip()
chname=field.split("=").strip()
lst.append((ename,chname)) #构建列表,元素为元组 才可以被sql解释器执行
except Exception:#因原始文本文件中有些记录不符合要求,故舍去
pass
f.close()
import MySQLdbas mysql #这个比较奇怪,虽然导入的是MySQLdb但pipmysql 就可以了
db = mysql.connect("localhost", "root", "123456", "wpdata", charset='utf8' )
cursor = db.cursor()
sql = "INSERT INTOworda(ename,chname) values(%s, %s)"
cursor.executemany(sql,lst)#一次插入多条记录
db.commit()
cursor.close()
db.close()
print('OK')
下期将公布NODE.js版,那个容易一些,因为曾经实现过,只不过换了电脑 需要重新写 本帖最后由 wp231957 于 2020-4-13 21:00 编辑
NODE+MYSQL 版从文本文件导入数据表
这里面坑也不少,好几千条数据,只要有一条数据不符合要求,整个sql语句就不执行
,但是这极个别的数据,从几千条里筛选 肉眼还真办不到,好在终于实现
let fs = require('fs');
let mysql = require('mysql');
let config = {
host : 'localhost',
user : 'root',
password : '123456',
database : 'wpdata'
};
let pool = mysql.createPool(config);
//构造单词信息
var arr=new Array();
fs.readFile('./商务英语词汇 copy.txt', {flag: 'r+', encoding: 'utf8'}, function (err, data) {
if(err) {
console.error(err);
return;
}
s=data.split("\n");
s.forEach(function(cval, index, sarr){
var tmp=cval.replace(/\r\n/gm,"").split("=",2); //只分割第一个标识符 后面即使存在 也不分割
if (tmp.length==2){ //原始文件中个别行不符合要求
arr.push(tmp);
}
});
//把单词信息写入数据库(此处用的是批量插入记录)
sql2="INSERT INTO wordb (ename,chname) VALUES ?";
pool.getConnection((err, connection) => {
if (err) {
console.error(err);
}
else
{
connection.query(sql2,,(err, rows)=>{//arr.slice(126,128) 截取数组
if (err) {
console.error(err);
}
else
{
console.log("插入数据成功");
connection.release();
pool.end();
};
});
};
});
});
页:
[1]