鱼C论坛

 找回密码
 立即注册
查看: 811|回复: 1

mysql导入数据一则

[复制链接]
发表于 2020-4-12 21:57:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
其实很简单的,但是对于摸着石头过河的我来说  调试了好几个小时
AMTF,百度里全是大坑,咕咚就掉进去了
sql 语句执行错误 就报个错误号,根本就不告诉你哪里错了  什么原因错的,应该怎么改

好了,目标:将文本文件的数据 导入mysql数据表
终实现:


  1. f = open('商务英语词汇 copy.txt',encoding = 'utf-8')
  2. lst=[]
  3. for field in f:
  4.     try:
  5.         ename=field.split("=")[0].strip()
  6.         chname=field.split("=")[1].strip()
  7.         lst.append((ename,chname))   #构建列表,元素为元组 才可以被sql解释器执行
  8.     except Exception:  #因原始文本文件中  有些记录不符合要求,故舍去
  9.         pass
  10. f.close()     
  11. import MySQLdb  as mysql   #这个比较奇怪,虽然导入的是MySQLdb  但pip  mysql 就可以了
  12. db = mysql.connect("localhost", "root", "123456", "wpdata", charset='utf8' )
  13. cursor = db.cursor()
  14. sql = "INSERT INTO  worda(ename,chname) values(%s, %s)"
  15. cursor.executemany(sql,lst)  #一次插入多条记录
  16. db.commit()
  17. cursor.close()
  18. db.close()
  19. print('OK')
复制代码


下期将公布NODE.js版,那个容易一些,因为曾经实现过,只不过换了电脑   需要重新写
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-13 20:56:58 | 显示全部楼层
本帖最后由 wp231957 于 2020-4-13 21:00 编辑

NODE+MYSQL 版  从文本文件导入数据表

这里面坑也不少,好几千条数据,只要有一条数据不符合要求,整个sql语句就不执行
,但是这极个别的数据,从几千条里筛选   肉眼还真办不到,好在
终于实现

  1. let fs = require('fs');   
  2. let mysql = require('mysql');

  3. let config = {  
  4.     host     : 'localhost',  
  5.     user     : 'root',  
  6.     password : '123456',  
  7.     database : 'wpdata'  
  8.   };  
  9. let pool = mysql.createPool(config);

  10. //构造单词信息
  11. var arr=new Array();
  12. fs.readFile('./商务英语词汇 copy.txt', {flag: 'r+', encoding: 'utf8'}, function (err, data) {
  13.     if(err) {
  14.         console.error(err);
  15.      return;
  16.     }
  17.     s=data.split("\n");
  18.     s.forEach(function(cval, index, sarr){
  19.         var tmp=cval.replace(/\r\n/gm,"").split("=",2);   //只分割第一个标识符 后面即使存在 也不分割
  20.         if (tmp.length==2){     //原始文件中个别行不符合要求
  21.             arr.push(tmp);   
  22.         }
  23.     });
  24.     //把单词信息写入数据库(此处用的是批量插入记录)
  25.     sql2="INSERT INTO wordb (ename,chname) VALUES ?";
  26.     pool.getConnection((err, connection) => {
  27.         if (err) {
  28.             console.error(err);
  29.         }
  30.         else
  31.         {
  32.             connection.query(sql2,[arr],(err, rows)=>{  //arr.slice(126,128) 截取数组
  33.                 if (err) {
  34.                     console.error(err);
  35.                 }
  36.                 else
  37.                 {
  38.                     console.log("插入数据成功");
  39.                     connection.release();
  40.                     pool.end();
  41.                 };
  42.             });
  43.         };
  44.         
  45.     });
  46. });




复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-14 16:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表