1亿条csv转sql

目的:不使用kettle,用python将1亿多行的csv文件转成sql文件,使用mysql进行读取。

  1. 背景概述

根据官网介绍,本数据集包含了2017年11月25日至2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括点击、购买、加购、喜欢)。数据集的组织形式和MovieLens-20M类似,即数据集的每一行表示一条用户行为,由用户ID、商品ID、商品类目ID、行为类型和时间戳组成,并以逗号分隔。

  • 文件转换方法

  • kettle:安装方法和导入方法都有,见B站up主:自发秩序

  • python:那往下看吧。(注意:不要1亿条一次性一起转,亲测16G内存扑街,电脑好的当我没说)

2.实操

  • 建库建表(使用navicat)

  • python代码

举个例子:构建1亿条数据,将数据切成5份,j作为index来定位切片下标。我们可以看到跑出来的代码实际上是缺了100150806这个数的,所以后面len(data)替换的时候记得+1。

import numpy as np
data = np.arange(1,100150806)
list = [0]
for i in range(2,11,2):
    s = round(int(100150806)*i*0.1)
    list.append(s)
print(list)
for j in range(0,5):
    # print(j)
    data2 = data[list[j]:list[j+1]]
    print(data2)

正式代码

# coding=gb2312
import pandas as pd
from sqlalchemy import create_engine

#获取dataframe文件
path = r'H:\UserBehavior\UserBehavior.csv'
data = pd.read_csv(path,header=0,encoding='utf-8',names=['user_id','item_id','category_id','behavior_type','timestamps'])
list = [0]
for i in range(2,11,2):
    s = round(int(len(data))*i*0.1)
    list.append(s)
print(list)
#数据切片
data1 = data[0:20030161]
data2 = data[20030161:40060322]
data3 = data[40060322:60090484]
data4 = data[60090484:80120645]
data5 = data[80120645:100150807]
# print(data4)


# 数据库信息
mysql_host = 'localhost'
mysql_db = 'taobao'
mysql_user = 'root'
mysql_pwd = '123456'
mysql_table = 'userbehavior'

def main():
    engine = create_engine(
        'mysql+pymysql://{}:{}@{}:3306/{}?charset=utf8'.format(mysql_user, mysql_pwd, mysql_host, mysql_db))
    
    #  表名
    data1.to_sql(mysql_table, con=engine, if_exists='append', index=False)
    data2.to_sql(mysql_table, con=engine, if_exists='append', index=False)
    data3.to_sql(mysql_table, con=engine, if_exists='append', index=False)
    data4.to_sql(mysql_table, con=engine, if_exists='append', index=False)
    data5.to_sql(mysql_table, con=engine, if_exists='append', index=False)
  

if __name__ == '__main__':
    main()

最后用mysql读取下数量,ok,没问题,导入完毕。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSV文件是一种常见的数据存储格式,而SQL文件是一种用于数据库操作的脚本文件。将CSV文件转成SQL文件的过程,主要是将CSV文件中的数据换为SQL语句的插入语句,以便能够将数据导入到数据库中。 首先,我们需要创建一个适合存储CSV文件数据的数据表。根据CSV文件的结构,定义SQL表的各列以及数据类型。 然后,可以使用编程语言,如Python或Java,来读取CSV文件。将CSV文件逐行解析,获取每行数据的值,并根据表的结构,构建SQL插入语句。 在构建插入语句时,需要将CSV文件中的每一列的值按照相应的数据类型进行处理。例如,对于日期类型的列,需要将CSV文件中的日期字符串换为数据库支持的日期格式。 在构建完插入语句后,将其写入到一个SQL文件中。可以使用文件操作函数将SQL插入语句写入文件中,每条插入语句占一行。 最后,将生成的SQL文件导入到数据库中。可以使用数据库命令行工具,如MySQL的mysql命令,运行该SQL文件,执行插入语句将数据导入到对应的数据表中。 需要注意的是,换过程中还要处理一些特殊情况,如空值、特殊字符等。同时,如果CSV文件较大,可能需要考虑分批导入数据,避免数据量过大导致数据库性能下降。 综上所述,将CSV文件换为SQL文件的过程,主要包括创建表结构、解析CSV文件、构建SQL插入语句和导入数据库等步骤。这样可以方便地将CSV文件中的数据导入到数据库中,以便进行后续的数据操作和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值