将包含逗号数据的csv文件导入MySQL

时间:2012-03-04 21:01:29

标签: python mysql wamp wampserver mysql-python

我有超过10GB的.csv文件。我试图使用python将这些文件中的数据导入MySQL。由于csv文件是逗号分隔文件,并且我有数据本身包含逗号,因此我不能在这里使用','进行拆分。请建议一些其他选择 用于拆分csv文件。 我想将数据从csv文件(数据本身包含逗号)导入MySQL(我使用Wamp服务器)。 我有'伦敦,英国','2010','信用,储蓄'等数据

3 个答案:

答案 0 :(得分:5)

为使用Python导入提供了一个很好的答案。但我不清楚为什么你需要Python来做它。 MySQL具有用于导入CSV数据的内置命令---请参阅load data手册页。例如,

LOAD DATA LOCAL INFILE 'source_data.csv'
INTO TABLE my_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES;

最后一部分忽略第一行(如果您的CSV文件有“标题”,则使用)。

答案 1 :(得分:2)

首先,我假设CSV文件在字符串值周围有引号。

因此,包含逗号的每个值都被这样的引号包围:

  

a,b,2,'foo,bar'

如果是,那么您可以使用以下内容:

进口

 csv

quoteChar = "'"

myReader = csv.reader(open('largefile.csv', 'rb'), delimiter=',', quoteChar = quoteChar)

for row in myReader:
    print row # this prints a list. Row is a list of values per line in your
    # 'largefile.csv' file. Each row is splitted on the delimiter char.
    # (comma in this case) and strings that are quoted by quoteChar (in your case
    # a ' are treated differently.) This will work for your input that you've given
    # in your question.

# this is what you used to do:
for line in open('largefile.csv', 'rb'):
     row = line.split(quoteChar)

否则,它将取决于您的CSV文件的外观。

答案 2 :(得分:0)

你可以使用mysqlimport

mysqlimport --ignore-lines=1 --fields-terminated-by=, --fields-optionally-enclosed-by='"' --verbose --local -u root -p DB_Name csv/path.csv > save_log.log