繁体   English   中英

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

[英]Import csv files containing data with commas into MySQL

我有超过 10GB 的 .csv 文件。 我正在尝试使用 python 将这些文件中的数据导入 MySQL。 由于 csv 文件是逗号分隔的文件,而我的数据本身包含逗号,因此我不能在此处使用 ',' 进行拆分。 请建议其他一些用于拆分 csv 文件的选项。 我想将数据从 csv 文件(其中数据本身包含逗号)导入 MySQL(我正在使用 Wamp 服务器)。 我有诸如“伦敦,英国”、“2010”、“信用、储蓄”之类的数据

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

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

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

首先,我假设 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 文件的外观。

您可以使用 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM