将MongoDB的数据提取出来并转到MySQL遇到的问题
来源:互联网 发布:微信刷赞软件破解版 编辑:程序博客网 时间:2024/06/05 13:30
先看看在MongoDB中的原始数据的样子:
Step1:导出csv
通过运行在cmd 中 运行mongoexport命令导出需要的数据:
PS:可能会有乱码,可以改一下编码格式
mongoexport -h localhost -d test -c orderList -f _id,createTime,shopName,userAddress,content.products.0.name,content.products.1.name,content.products.2.name,content.products.3.name,content.products.4.name,aoi --type=csv -o C:\Users\LK\Desktop\orderlist3.csv
Step1.1:将一些数据转换成自己需要的
导出的csv文件的内容,由于日期那一列是数字,需要转化为日期格式(我用java),如果本身没啥问题当然不用转。。。:
Long 转 date:
/** * 读取csv文件并将里面的数字转化为date,再输出到csv文件 * @author LK * */import com.csvreader.CsvReader;import com.csvreader.CsvWriter;import org.junit.Test;import java.io.IOException;import java.nio.charset.Charset;import java.text.SimpleDateFormat;import java.util.Date;public class CSV_Num2Date { /** * CSV导出 * @throws IOException * * @throws Exception */ public static void main(String[] args) throws IOException { exportCsv();// System.out.println(num2date("yyyy/MM/dd HH:mm:ss","1483141509")); } public static void exportCsv() throws IOException { String srcCSV = "F://JavaForOffer//CSV//data//orderlist.csv"; String targetFile = "C://Users/LK//Desktop//orederlist_time.csv"; CsvReader reader = new CsvReader(srcCSV, ',', Charset.forName("UTF-8")); CsvWriter write =new CsvWriter(targetFile,',',Charset.forName("UTF-8"));// 各字段以引号标记 write.setForceQualifier(false);// 路过表头 reader.readHeaders();// 逐条读取记录,直至读完 String[] header = {}; while (reader.readRecord()) {// 把头保存起来 if (reader.getCurrentRecord()==0){ header = reader.getValues(); }// 获取当前记录位置 System.out.print(reader.getCurrentRecord() + ":");// 读取一条记录 System.out.println(reader.getRawRecord()); String[] tmp = {reader.getValues()[0],reader.getValues()[1]};// 修改记录,并只写入第一个字段和第二字段 if (!header[1].equals(tmp[1]) && ("".equals(tmp[1])||tmp==null)){ tmp[1]="空"; write.writeRecord(tmp); }else{ write.writeRecord(new String[]{reader.getValues()[0],num2date("yyyy/MM/dd HH:mm:ss",reader.getValues()[1]) ,reader.getValues()[2],reader.getValues()[3],reader.getValues()[4],reader.getValues()[5] ,reader.getValues()[6],reader.getValues()[7],reader.getValues()[8],reader.getValues()[9]}); } } reader.close(); write.close(); } public static String num2date(String dateFormat, String millSec_str){ long millSec = Long.parseLong(millSec_str);// System.out.println("millSec:"+millSec); long millSec_long = millSec * 1000;// System.out.println("millSec_long"+millSec_long); SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); Date date = new Date(millSec_long); return sdf.format(date); }}
转完以后:
Step2:将csv导入MySQL
天啊,这里遇到个问题,就是倒不进去!!!
问题1:
需要在mysql中先创建table
问题2:
一般csv第一行是各个列的名称,所以需要忽略第一行,或者直接在源文件删除第一行
问题3:
csv文件的存放 位置
Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
这是因为需要导入的文件不再MySQL认为的安全文件夹内,因此MySQL拒绝了导入操作。
使用如下语句可看到MySQL当前认为的安全文件夹,将文件放入文件夹内即可
SHOW VARIABLES LIKE 'secure_file_priv';
我这里的安全文件夹是C:\ProgramData\MySQL\MySQL Server 5.7\Uploads
load data infile 'C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads\\orderlist_time7.csv' into table orderlist fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n';
阅读全文
1 0
- 将MongoDB的数据提取出来并转到MySQL遇到的问题
- 将轮廓检测的各个轮廓提取出来并显示
- 将轮廓检测的各个轮廓提取出来并显示
- 将轮廓检测的各个轮廓提取出来并显示
- jmeter添加http请求、java请求,将返回的json数据提取出来并将结果追加到一个文件
- 将OMX相关的文件提取出来
- 将网页表格的内容提取出来
- java抓mongodb数据遇到的问题
- vc6代码转到vc2010遇到的问题
- 将Eclipse工具下的项目转到idea开发工具下遇到的问题
- 在整个硬盘搜索一个文件.并将该文件的路径提取出来
- Python数据提取过程中遇到的一些问题
- mysql提取身份证生日并查询指定月份的数据
- 输入一个不定长度的数字字符串,将其中的数字提取出来并保存在数组中。
- 将mysql的datetime类型数据,封装成json时遇到的问题
- 要求:将125万数据的兑换码,分25列,一列5万数据提取出来
- 将Discuz快速回帖的表情提取出来
- 如何快速的将word文档中的图片提取出来
- TMMi如何促进软件测试过程的改进
- 用程序来控制一个网页,实现自动输入等操作
- 【bzoj1090】[SCOI2003]字符串折叠
- 最短路—Floyd(QAQ)
- 如何搭建健身房教练私教器材设备微信公众号预约系统
- 将MongoDB的数据提取出来并转到MySQL遇到的问题
- centos7安装samba
- Oracle数据库之ROWID伪列
- mysql 提高查询效率的方法
- OpenCV编译,FFmpeg或ippicv下载不成功
- 利用Ansible部署运行Apache(http)的Docker容器
- l1 相比于 l2 为什么容易获得稀疏解?
- Android Studio 分析器详解
- cmake 入门编程之通过cmake传值到主程序