gpt4 book ai didi

python - MySQL `Load Data Infile Local` 对于 .csv 失败,除非我先打开并保存该文件。我怎样才能避免这一步?

转载 作者:行者123 更新时间:2023-11-29 08:30:50 25 4
gpt4 key购买 nike

我通过使用 utf8 编码编写 pandas DataFrame to_csv,使用 python 脚本生成 .csv 文件。

consEx.to_csv(os.path.join(base_dir, "Database/Tables/Consumption Expenditure/consumptionExpenditure.csv"), encoding = 'utf8', index = False)

接下来,我通过 Load Data Local Infile 上传到 Amazon RDS MySQL,并将 Charset 也设置为 utf8 的表。

CREATE  TABLE IF NOT EXISTS Consumer.Expenditure (
ceID INT NOT NULL AUTO_INCREMENT ,
ceCategory INT NOT NULL,
year INT NULL,
countryID INT NOT NULL,
ceYoY DEC(15,2) NULL,
dateCreated DATE NOT NULL ,
lastModified DATETIME NULL DEFAULT NULL ,
dateDeleted DATETIME NULL DEFAULT NULL ,
PRIMARY KEY (ceID) ,
CONSTRAINT ce_fk_countries
FOREIGN KEY (countryID)
REFERENCES ConsumerAlpha.Countries (countryID)
ON DELETE NO ACTION
ON UPDATE NO ACTION)

CHARSET utf8
ENGINE = InnoDB;
SHOW WARNINGS;

现在,仅当我首次打开并手动保存 csv 文件时,上传才有效 - 相同名称、相同位置。否则,它会失败而不会出现错误 - 只是不导入任何内容。但是,如果我打开、保存并关闭,上传效果会很好。

LOAD DATA LOCAL 
INFILE '/Users/xxx/Dropbox/Data/Database/Tables/Consumption Expenditure/consumptionExpenditure.csv'
INTO TABLE Consumer.Expenditure
fields terminated by ','
optionally enclosed by '"'
lines terminated by '\r'
IGNORE 1 LINES
(ceCategory, year, countryID, ceYoY, dateCreated)
SET dateCreated = NOW();

我有什么遗漏可以避免这一步吗?对于大型表,可能有许多 .csv 文件。我环顾四周,但没有在任何地方遇到这个特定问题。谢谢!

最佳答案

考虑使用 pandas.io.sql.write_frame 跳过 CSV 步骤。

import MySQLdb
conn = Mysqldb.conn(host='...', user='...', passwd='...',db='...')

import pandas.io.sql as psql
psql.write_frame(dataframe, 'TableName', conn, 'mysql')

如果要追加到现有表,请使用关键字参数 if_exists='append'

编辑:我忘了@Andy 不久前写了基本相同的答案:https://stackoverflow.com/a/16477603/1221924 。正如他所指出的,我们添加了 MySQL 支持,但忽略了对其进行记录。

关于python - MySQL `Load Data Infile Local` 对于 .csv 失败,除非我先打开并保存该文件。我怎样才能避免这一步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16675844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com