1

我使用的是 ubuntu 12.04 操作系统。我有一个装满文件的.csv文件夹。我需要将所有这些 csv 文件导入到本地机器上的 mysql 数据库中。目前,我一直在使用这种语法,从 mysql 命令行,将 csv 文件逐个加载到数据库中:

load data local infile 'file_name.csv' into table table_name  fields terminated by ',' optionally enclosed by '"'  lines terminated by '\r\n';

这真的很好用。我想知道是否有一种方法可以一次加载所有这些文件。我的第一个想法是制作一个 python 脚本来处理它:

import MySQLdb as mysql
import os
import string
db=mysql.connect(host="localhost",user="XXXX",passwd="XXXX",db="test")
l = os.listdir(".")
for file_name in l:
        print file_name
        c=db.cursor()
        if (file_name.find("DIV.csv")>-1):
                c.execute("""load data local infile '%s' into table cef_div_table fields terminated by ',' optionally enclosed by '"'  lines terminated by '\r\n';""" % file_name)

使用此解决方案,我遇到了不适用于新版本的 MySQL 客户端的问题,除非我使用该选项load data local infile从命令行启动 MySQL 。--local-infile这真的是拖累...

我找到了一个似乎可行的解决方案。我local_file = 1在 python 中建立连接时使用该选项(如此处建议:MySQL LOAD DATA LOCAL INFILE Python)。这样,代码看起来就完成了,没有任何错误,但没有任何东西都上传到数据库中。

这很奇怪,只是为了确保,我尝试从 mysql 命令行上传单个文件,并且它可以工作文件。

我愿意尝试另一种解决方案,即一次将多个 csv 文件上传到 mysql 中。任何帮助是极大的赞赏!

4

0 回答 0