问题很简单,但经过数小时的搜索后我无法找到解决方案。
我想读取csv文件,强制对象和布尔值到字符串,并将其写入SQL。但是,当将数据解析为MSSQL时,所有这些都可以工作,它将布尔值转换为字符串' 0'和' 1'而不是' TRUE'和' FALSE'。
见下面的代码:
pandasDF = pandas.read_csv(pathCSV, sep = ';')
emptyTable(session, tableName)
obj_cols = pandasDF.select_dtypes(include=[object, bool]).columns.values.tolist()
pandasDF.to_sql(tableName, engine, if_exists = 'append', dtype = {c: String for c in obj_cols}, index = False)
我认为最好的解决方案是让pandas.read_csv停止识别布尔数据类型,但是我无法找到如何实现这一点......
答案 0 :(得分:0)
BOOL/BOOLEAN
是MySQL中TINYINT(1)
的同义词。
实际值TRUE
和FALSE
是1
和0
的别名,请参阅此示例:
mysql> SELECT IF(0 = FALSE, 'true', 'false');
+--------------------------------+
| IF(0 = FALSE, 'true', 'false') |
+--------------------------------+
| true |
+--------------------------------+
mysql> SELECT IF(1 = TRUE, 'true', 'false');
+-------------------------------+
| IF(1 = TRUE, 'true', 'false') |
+-------------------------------+
| true |
+-------------------------------+
有关详细信息,请参阅MySQL reference 5.7。