精华内容
下载资源
问答
  • /usr/bin/pythonimport MySQLdbimport csvdb = MySQLdb.connect(host="host", # The Hostuser="username", # usernamepasswd="pwd", # passworddb="databasename"...

    这是我的代码:#!/usr/bin/python

    import MySQLdb

    import csv

    db = MySQLdb.connect(host="host", # The Host

    user="username", # username

    passwd="pwd", # password

    db="databasename") # name of the data base

    sqlLoadData = "LOAD DATA LOCAL INFILE "csv?_file_name.csv" INTO TABLE tablename "

    sqlLoadData += "FIELDS TERMINATED BY "," LINES TERMINATED BY " ""

    sqlLoadData += "IGNORE 1 LINES"

    sqlLoadData += "ENCLOSED BY """ ESCAPED BY "\" "

    try:

    curs = db.cursor()

    curs.execute(sqlLoadData)

    resultSet = curs.fetchall()

    except StandardError, e:

    print e

    db.rollback()

    db.close()

    我收到一条错误消息:您的SQL语法有错误;请检查与Mysql服务器相关的手册。

    当我移除部件sqlLoadData += "ENCLOSED BY """ ESCAPED BY "\" "时,一切工作正常。我使用最后一部分只是为了从值中删除引号。

    我也试过:cursor = mydb.cursor()

    reader = csv.reader(open("Cumulative.csv", "rb"))

    reader.next() for row in reader[1:]:

    cursor.execute("INSERT INTO Cumulative (C1, C2, C3, C4, C5, C6) VALUES(%s, %s, %s, %s, %s, %s)", row)

    cursor.commit()

    关闭与数据库的连接。cursor.close()

    我只想删除引号,这样整数字段将支持数据。所以带引号的“1”将被视为字符串而不是整数

    有人能帮我理解这个吗?

    谢谢!

    展开全文
  • Python从MySQL数据库中导出csv文件处理csv文件导入MySQL数据库import pymysqlimport csvimport codecsdef get_conn():conn = pymysql.connect(host="localhost", port=3306, user="root", ...

    Python从MySQL数据库中导出csv文件处理

    csv文件导入MySQL数据库

    import pymysql

    import csv

    import codecs

    def get_conn():

    conn = pymysql.connect(host="localhost", port=3306, user="root", passwd="root", db="test_csv", charset="utf8")

    return conn

    def insert(cur, sql, args):

    cur.execute(sql, args)

    def read_csv_to_mysql(filename):

    with codecs.open(filename=filename, mode="r", encoding="utf-8") as f:

    reader = csv.reader(f)

    head = next(reader)

    conn = get_conn()

    cur = conn.cursor()

    sql = "insert into tb_csv values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"

    for item in reader:

    if item[1] is None or item[1] == "": # item[1]作为唯一键,不能为null

    continue

    args = tuple(item)

    print(args)

    insert(cur, sql=sql, args=args)

    conn.commit()

    cur.close()

    conn.close()

    if __name__ == "__main__":

    read_csv_to_mysql("1.csv")

    注:

    1.csv文件的表头如:

    序号,合同编号,义务人,档案柜号,柜内编号,权利人,放款金额,放款日期,他项权利证编号,抵押物地址,结清出库日期,备注,地区

    mysql的创建tb_csv表语句

    CREATE TABLE tb_csv(

    xuhao VARCHAR(20),

    htcode VARCHAR(20),

    yiwuren VARCHAR(20),

    dagh VARCHAR(20),

    gncode VARCHAR(20),

    quanliren VARCHAR(20),

    fkmoney VARCHAR(20),

    fkdata VARCHAR(20),

    qitacode VARCHAR(20),

    diyaaddr VARCHAR(100),

    jqdata VARCHAR(30),

    beizhu VARCHAR(30),

    zone VARCHAR(30),

    PRIMARY KEY(htcode)

    )CHARSET=utf8;

    这里为了省事,表中的字段都指明varchar类型

    MySQL数据库写入csv文件

    import pymysql

    import csv

    import codecs

    def get_conn():

    conn = pymysql.connect(host="localhost", port=3306, user="root", passwd="root", db="test_csv", charset="utf8")

    return conn

    def query_all(cur, sql, args):

    cur.execute(sql, args)

    return cur.fetchall()

    def read_mysql_to_csv(filename):

    with codecs.open(filename=filename, mode="w", encoding="utf-8") as f:

    write = csv.writer(f, dialect="excel")

    conn = get_conn()

    cur = conn.cursor()

    sql = "select * from tb_csv"

    results = query_all(cur=cur, sql=sql, args=None)

    for result in results:

    print(result)

    write.writerow(result)

    if __name__ == "__main__":

    read_mysql_to_csv("2.csv")

    以上这篇Python之csv文件从MySQL数据库导入导出的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    展开全文
  • 使用python 将csv文件导入mysql

    千次阅读 2019-06-10 16:41:29
    Ocacle方面,PLSQL可以利用...SQL server 自带的导入工具功能十分强大,可以使用导入平面工具直接将csv或者txt文件导入至数据库中,并且可以自动创建表和表结构。 而mysql方面,自带的工具是LOAD DATA 和 mysqlimpo...

    Ocacle方面,PLSQL可以利用自带的导入功能将txt格式文件导入表,但需要预先创建表结构。PLSQL导入功能还有一个好处是可以自动对齐字段,缺失的字段可以自动忽略,不会报错停止。

    SQL server 自带的导入工具功能十分强大,可以使用导入平面工具直接将csv或者txt文件导入至数据库中,并且可以自动创建表和表结构。

    而mysql方面,自带的工具是LOAD DATA 和 mysqlimport ,这两个工具的优势是能够快速的将大量数据导入至数据库中,同时需要预先创建好表结构。

    如果我们想利用python将csv文件导入至数据库中并且自动创建表结构,该怎么办呢?接下来我们利用pymysql和pandas完成这项任务。
    实际上,本方法同样适用于导入其他数据库(例如Oracle、MongoDB等),只需要调用不同的python-数据库接口

    首先建立和数据库的连接

    import pymysql
    # 参数设置 DictCursor使输出为字典模式 连接到本地用户root 密码为666
    config = dict(host='localhost', user='root', password='666',
                 cursorclass=pymysql.cursors.DictCursor
                 )
    # 建立连接
    conn = pymysql.Connect(**config)
    # 自动确认commit True
    conn.autocommit(1)# 设置光标
    cursor = conn.cursor()
    

    其次,利用pandas读取目标文件

    这里为了示范,随便从网上下载了一个数据包:
    http://quotes.money.163.com/trade/lsjysj_600508.html#01b07

    import pandas as pd
    # pandas读取文件 这里随便找了一个爬取的股票文件改的名字
    # usecols 就是说我只用这些列其他列不需要
    # parse_dates 由于csv只储存str、int、float格式无法储存日期格式,所以读取是设定吧日期列读作时间格式
    path = 'C:\\Users\\XXX\\Desktop\\XXX\\600508.csv'
    df = pd.read_csv(path, encoding='gbk', usecols=[0, 3, 4, 5, 6, 11], parse_dates=['日期'] )
    

    写一个函数,用来解析csv文件转化为的dataframe,并返回相应的建表语句

    # 一个根据pandas自动识别type来设定table的type
    def make_table_sql(df):
        #将df中的列名放入list中
        columns = df.columns.tolist()
        #判断dataframe中每一列的type
        types = df.ftypes
        # 添加id 制动递增主键模式
        make_table = []
        for item in columns:
            if 'int' in types[item]:
                char = item + ' INT'
            elif 'float' in types[item]:
                char = item + ' FLOAT'
            elif 'object' in types[item]:
                char = item + ' VARCHAR(255)'
            elif 'datetime' in types[item]:
                char = item + ' DATETIME'
            make_table.append(char)
        #','.join(list)返回的是一个文本串,用','分割了每一个元素然后返回
        return ','.join(make_table)
    

    创建函数,用于将解析好的数据内容导入到数据库中

    # csv 格式输入 mysql 中
    def csv2mysql(db_name, table_name, df):
        # 创建database,运行不知道为什么会报错
        # cursor.execute('CREATE DATABASE IF NOT EXISTS {}'.format(db_name))
        # 选择连接database
        conn.select_db(db_name)
        #创建table
        cursor.execute('DROP TABLE IF EXISTS {}'.format(table_name))
        cursor.execute('CREATE TABLE {}({})'.format(table_name,make_table_sql(df)))
        # 提取数据转list 这里有与pandas时间模式无法写入因此换成str 此时mysql上格式已经设置完成
        df['日期'] = df['日期'].astype('str')
        #将数据放入list中
        values = df.values.tolist()
        # 根据columns个数
        s = ','.join(['%s' for _ in range(len(df.columns))])
        # executemany批量操作 插入数据 批量操作比逐个操作速度快很多
        cursor.executemany('INSERT INTO {} VALUES ({})'.format(table_name,s), values)
    

    运行function

        csv2mysql(db_name='testdb', table_name='test',df = df)
    

    测试一下是否写入成功

    cursor.execute('SELECT * FROM test1 LIMIT 5')
    # scroll(self, value, mode='relative') 移动指针到某一行; 如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条.
    cursor.scroll(4)
    cursor.fetchall()
    
    展开全文
  • /usr/bin/pythonimport MySQLdbimport csvdb = MySQLdb.connect(host="host", # The Hostuser="username", # usernamepasswd="pwd", # passworddb="databasename"...

    这是我的代码:#!/usr/bin/python

    import MySQLdb

    import csv

    db = MySQLdb.connect(host="host", # The Host

    user="username", # username

    passwd="pwd", # password

    db="databasename") # name of the data base

    sqlLoadData = 'LOAD DATA LOCAL INFILE "csv?_file_name.csv" INTO TABLE tablename '

    sqlLoadData += 'FIELDS TERMINATED BY "," LINES TERMINATED BY " "'

    sqlLoadData += 'IGNORE 1 LINES'

    sqlLoadData += 'ENCLOSED BY '"' ESCAPED BY "\" '

    try:

    curs = db.cursor()

    curs.execute(sqlLoadData)

    resultSet = curs.fetchall()

    except StandardError, e:

    print e

    db.rollback()

    db.close()

    我收到一条错误消息:您的SQL语法有错误;请检查与Mysql服务器相关的手册。

    当我移除部件sqlLoadData += 'ENCLOSED BY '"' ESCAPED BY "\" '时,一切工作正常。我使用最后一部分只是为了从值中删除引号。

    我也试过:cursor = mydb.cursor()

    reader = csv.reader(open('Cumulative.csv', 'rb'))

    reader.next() for row in reader[1:]:

    cursor.execute('INSERT INTO Cumulative (C1, C2, C3, C4, C5, C6) VALUES(%s, %s, %s, %s, %s, %s)', row)

    cursor.commit()

    关闭与数据库的连接。cursor.close()

    我只想删除引号,这样整数字段将支持数据。所以带引号的“1”将被视为字符串而不是整数

    有人能帮我理解这个吗?

    谢谢!

    展开全文
  • python将csv文件导入mysql

    千次阅读 2018-06-28 15:45:15
    import csv import codecs def get_conn(): db = pymysql.connect(host="12xxxx",port=3306, user="root",password="13xxx", db="pydata201806",charse...
  • python 将csv文件导入mysql中去

    千次阅读 2019-02-11 10:03:35
    python,2.7 将csv文件导入mysql中去; 将csv文件放到指定目录里面,最好不要是中文命名 1.csv文件中存有首行字段名 2.没有首行字段名 #!/usr/bin/python # -*- coding=utf-8 -*- import xlrd import string...
  • csv数据一行一行读入到Python中,然后用insert 语句逐条插入到数据库中,以下是一个简单的列子 数据文件t.csv: bid,bid_type 未发布,0 正招标,1 拒绝发布,2 满标,3 通过,4 拒绝满标,5 流标,6 退标,7 ...
  • csv文件导入MySQL数据库 import pymysql import csv import codecs def get_conn(): conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='test_csv', charset='utf8') return ...
  • 本文为大家分享了使用navicat将csv文件导入mysql的具体代码,供大家参考,具体内容如下 1.打开navicat,连接到数据库并找到自己想要导入数据的表。数据库表在指定数据库下的表下。 2.右键点击数据表。点击import ...
  • csv文件导入MySQL数据库 import pymysql import csv import codecs def get_conn(): conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='test_csv...
  • 文章来源:智能演示Python有很多库可以对CSV文件和Excel文件进行自动化和规模...★本文就来分享一下,如何通过 Python 任意结构的CSV文件导入MySQL数据库。不管你的CSV文件存在哪里,也不管你的CSV文件有几个字段...
  • I have a CSV file and I want to bulk-import this file into my sqlite3 database using Python. the command is ".import .....". but it seems that it cannot work like this. Can anyone give me an example o...
  • https://www.cnblogs.com/yuki-nana/p/10898774.html (一个不行就换一个) 报错:连接mysql错误 解决:替换掉那些文本内容 成功实现导入csvMySQL中 2新需求,添加数据新的行,两个时间 学习:df操作:...
  • import pandas as pd from sqlalchemy import create_engine # 初始化数据库连接,使用pymysql模块 # MySQL的用户:root, 密码:147369, 端口:3306,...# 新建的DataFrame储存为MySQL中的数据表,储存index列 df = pd.
  • 接口开发:从本地读取数据(xls,csv,txt,xlsx),部分格式有问题的对付掉,计算结果,再写入远程数据库1、读取指定目录下的所有文件2、根据读取文件类型(都是表格文件),读取成SQL可以识别的格式。部分格式有问题...
  • 利用Python将excel或csv文件导入mysql数据库中 1. 导入MySQL中 # 导包 import pandas as pd import pymysql from sqlalchemy import create_engine # 读取csv文件 data = pd.read_csv('大学毕业生收入数据集....
  • 前面分享的几篇文章当中已经实现从tushare获取数据文件本地储存化,这段时间我一直在考虑着如何实现csv文件mysql化,(当你是从我前面文章当中看过来的请再回去看看,我修改添加了转换trade_date的数据类型那一句...
  • Python读取CSV文件写入Mysql数据库

    千次阅读 2020-10-29 21:43:52
    环境 win10 python3.7 mysql5.7 方法 pymysql pip install pymysql xxx.py # -*- coding:utf-8 -*- import pandas as pd ... # 用pandas读取csv # data = pd.read_csv(file_name,engine='python',encoding=
  • 参数分别为csv文件路径,表名称,数据库名称 def load_csv(csv_file_path, table_name, database): # 打开csv文件 file = open(csv_file_path, 'r', encoding='utf-8') # ...
  • 一直不大懂csv怎么通过mysql图形化的界面直接导入,看了很多帖子,总觉得自己会了,但实际导入中又总是出问题。一个是如果直接一个csv导入自动...所以干脆通过python的pymysql库csv写入mysql吧。 import pymysql im
  • pd.to_sql仅支持sqlite3与sqlalchemy,所以pymysql直接建立的数据库连接对象无法作为to_sql的连接参数 ...将csv文件导入mysql实例: # 导包 import pymysql # mysql驱动 import pandas as pd from sqlalchemy im...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,761
精华内容 2,304
关键字:

python将csv文件导入mysql

python 订阅
mysql 订阅