【发布时间】:2013-05-16 13:33:32
【问题描述】:
我使用 python 脚本通过使用 utf8 编码编写 pandas DataFrame to_csv 来生成 .csv 文件。
consEx.to_csv(os.path.join(base_dir, "Database/Tables/Consumption Expenditure/consumptionExpenditure.csv"), encoding = 'utf8', index = False)
接下来,我通过Load Data Local Infile 将Charset 也设置为utf8 的表上传到Amazon RDS MySQL。
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 文件。我环顾四周,但在任何地方都没有遇到过这个特殊问题。谢谢!
【问题讨论】:
-
"打开并手动保存 csv 文件" ...您能再描述一下吗?您的编辑器是否以任何方式更改文件?
-
How to insert pandas dataframe via mysqldb into database? 的可能重复项在第二个想法上,它可能是相反的,但相关。
标签: python mysql file-upload csv pandas