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