用CSV快速导入MySQL数据表(csv导入mysql表中)

用CSV快速导入MySQL数据表

在实际的数据采集和处理中,我们常常需要从大量的数据中筛选出有用的信息,并将其导入到数据库中。而CSV(Comma Separated Values)文件格式是一种常用的数据交换格式,在数据库中快速导入CSV文件数据也是十分常见的需求。接下来我们将会介绍如何使用CSV快速导入MySQL数据表。

准备工作:

在开始之前,我们需要做好以下准备工作:

1. 登录到MySQL数据库中,并创建数据表,确保数据表的结构与CSV文件的字段对应。

2. 打开CSV文件,并确认每列数据的划分符号。在这里我们假定划分符为“,”。

3. 准备好CSV文件的路径及文件名。

具体步骤:

1. 我们需要确定我们要导入数据的数据表。在这里我们以“book”表为例,其字段包括“book_id”,“book_name”,“publisher”,“publish_date”,“price”。

CREATE TABLE book (

book_id INT(11) NOT NULL AUTO_INCREMENT,

book_name VARCHAR(100) NOT NULL,

publisher VARCHAR(100) NOT NULL,

publish_date DATE NOT NULL,

price DECIMAL(5, 2) NOT NULL,

PRIMARY KEY (book_id)

);

2. 接着,我们需要导入CSV文件的数据到“book”表中。在命令行中输入如下命令:

LOAD DATA INFILE ‘csv_file_path’ INTO TABLE book

FIELDS TERMINATED BY ‘,’

LINES TERMINATED BY ‘\n’

IGNORE 1 ROWS

(book_name, publisher, publish_date, price);

其中,csv_file_path为CSV文件的路径及文件名。

由于MySQL默认情况下不允许从本地文件系统中导入数据,因此我们需要添加LOCAL选项。同时,我们还需要注意使用的划分符号(在这里为逗号“,”)以及每行数据的结束符号(在这里为换行符“\n”)。此外,我们还需忽略CSV文件的第一行(即表头)。我们声明导入的字段列表,并确保与“book”表中的字段顺序及名称对应。

3. 稍等片刻,当程序运行完成后,我们即可在“book”表中看到我们所导入的数据。

代码:

以下是一个Python脚本的示例,可用于在命令行中执行CSV数据导入操作。

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import MySQLdb

# MySQL数据库连接信息

MYSQL_HOST = ‘localhost’

MYSQL_USER = ‘username’

MYSQL_PASSWORD = ‘password’

MYSQL_DATABASE = ‘database_name’

# CSV文件信息

CSV_FILE_PATH = ‘/path/to/csv/file.csv’

# 打开数据库连接

db = MySQLdb.connect(host=MYSQL_HOST, user=MYSQL_USER, passwd=MYSQL_PASSWORD, db=MYSQL_DATABASE, charset=’utf8′)

# 使用cursor()方法获取操作游标

cursor = db.cursor()

# SQL语句

sql = “LOAD DATA LOCAL INFILE ‘%s’ INTO TABLE book \

FIELDS TERMINATED BY ‘,’ \

LINES TERMINATED BY ‘\n’ \

IGNORE 1 ROWS \

(book_name, publisher, publish_date, price)” % CSV_FILE_PATH

# 执行命令

cursor.execute(sql)

# 提交到数据库执行

db.commit()

# 关闭数据库连接

db.close()

我们可通过输入如下命令执行该脚本:

python import_csv_to_mysql.py

我们在MySQL数据库中即可看到导入的数据。

结语:

使用CSV快速导入MySQL数据表,无疑是一种非常便捷的方法。注意在导入数据的过程中,需要注意的细节还有很多,如CSV文件中可能存在数据类型不一致、空值、特殊符号等情况,因此我们需要根据实际情况进行相应的处理。


数据运维技术 » 用CSV快速导入MySQL数据表(csv导入mysql表中)