Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将包含逗号数据的csv文件导入MySQL_Python_Mysql_Wamp_Wampserver_Mysql Python - Fatal编程技术网

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

Python 将包含逗号数据的csv文件导入MySQL,python,mysql,wamp,wampserver,mysql-python,Python,Mysql,Wamp,Wampserver,Mysql Python,我有超过10GB的.csv文件。我正在尝试使用python将这些文件中的数据导入MySQL。由于csv文件是逗号分隔的文件,并且我的数据本身包含逗号,因此我不能在此处使用“,”进行拆分。有请建议一些其他的选择 用于分割csv文件。 我想将数据从csv文件(其中数据本身包含逗号)导入MySQL(我正在使用Wamp服务器)。 我有数据,如“伦敦,英国”,“2010”,“信用,储蓄”< /p> < p>首先,我假设CSV文件在字符串值周围有引号。< /P> 因此,每个包含逗号的值都由如下引号包围: a

我有超过10GB的.csv文件。我正在尝试使用python将这些文件中的数据导入MySQL。由于csv文件是逗号分隔的文件,并且我的数据本身包含逗号,因此我不能在此处使用“,”进行拆分。有请建议一些其他的选择 用于分割csv文件。 我想将数据从csv文件(其中数据本身包含逗号)导入MySQL(我正在使用Wamp服务器)。
我有数据,如“伦敦,英国”,“2010”,“信用,储蓄”< /p> < p>首先,我假设CSV文件在字符串值周围有引号。< /P> 因此,每个包含逗号的值都由如下引号包围:

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文件的外观。

对于使用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文件有“标题”,请使用)。

如果您提供了数据示例,我们可能会想到一些东西。我在问题中提供了示例数据:),谢谢您的帮助。由于我还必须将此内容传输到MySQL数据库,因此我执行了以下操作:对于myReader中的行:values=row.split(','),然后将这些值存储到MySQL中。这种分裂从本质上造成了问题。是否有其他方法将数据传输到MySQL@user869790:Daan正在向您展示另一种方法。Python内置的
csv
模块就是您应该用于此任务的模块。不要重新发明已经为您构建和测试的内容。@user869790 Adam Bernier是对的。我更新了我的答案,使事情更清楚一些。myReader中的行与在line.split()之后得到的行(类型)相同,但之后是“更好”。CSV模块为您完成所有这些。没有必要重新发明轮子。@AdamBernier只是一个天真的问题,请原谅我,因为我是新手。如何检查以了解我拥有的csv文件的类型。因为我运行了上面的代码,发现我的数据没有被双引号包围,所以我也可以在'xlsx'@daantimer中查看该文件,谢谢你的方法也很有效。非常感谢你的帮助非常感谢你的帮助。但由于我是一个新手,我不知道我的csv文件(我在xls中查看)是否用引号括起来,我的数据也有注释,所以我认为其中一定有引号,数据就像stackoverflows数据,我将其转换为csv存储到数据库中。你能给我一个线索,让我检查一下所附的符号吗。再次感谢你的帮助helping@user869790“可选”部分表示字段周围不一定总是有双引号。如果您想查看包含字段的内容,可以打开该文件并查看数据,然后再对其运行
LOAD
命令。再次感谢您的帮助。是否有一种好的方法可以让我只输入一些年份的记录,而不是数据集中所有年份的记录?使用这种方法,而不是直接输入。我建议将其全部加载到一个您计划丢弃的表中,然后使用
createtable。。选择
syntax以生成包含实际所需数据的表。看见