在使用Python MySQLdb模块执行csv导入时,数据丢失。疯狂的事情是,我可以使用其他MySQL客户端加载完全相同的csv,而且它工作得很好。
它截断了我7019行CSV的10行。
我正在调用的命令:load DATA LOCAL INFILE'/path/to/load.txt'REPLACE INTO TABLE tble_name FIELDS终止为“,”
当使用linux上的本机mysql客户机或mac上的sequel pro mysql客户机运行上述命令时,它运行得很好,我可以导入7019行。
dest_cursor.execute( '''LOAD DATA LOCAL INFILE '/path/to/load.txt' REPLACE INTO TABLE tble_name FIELDS TERMINATED BY ","''' )
dest_db.commit()
当警告弹出时,它在行
,但我没有看到与csv中的行相关的内容(我认为是它试图在目标表上创建的行,而不是csv中的行),所以我不能使用它来帮助排除故障。
果然,当它完成时,我的目标表缺少了一些行。
不幸的是,由于csv中有7000多行,很难准确地说出它阻塞的是哪一行以供进一步分析。当警告弹出时,它在行
处声明,但我没有看到与csv中的行相关的内容(我认为是它试图在目标表上创建的行,而不是csv中的行),所以我不能使用它来帮助排除故障。
我可以使用其他MySQL客户端导入整个csv这一事实让我觉得MySQLdb模块配置不对或其他什么的。
这是Python2.7,感谢您的帮助。任何关于如何获得更好的可见性的想法都是有帮助的。
为了进一步的帮助,我想问你以下的问题。
选择@@global.sql_warnings;
(如果是这样,则会显示错误,因为它可能是静默失败。)选择@@global.sql_mode;
“
作为一个。“
或
或任何可能在Bash/Python/MySQL翻译中被捕获的东西 Python 2.7
选择@@global.version;
查询:
SELECT DISTINCT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE (
SCHEMA_NAME <> 'sys' AND
SCHEMA_NAME <> 'mysql' AND
SCHEMA_NAME <> 'information_schema' AND
SCHEMA_NAME <> '.mysqlworkbench' AND
SCHEMA_NAME <> 'performance_schema'
);
查询:
SELECT DISTINCT ENGINE, TABLE_COLLATION FROM INFORMATION_SCHEMA.TABLES
WHERE (
TABLE_SCHEMA <> 'sys' AND
TABLE_SCHEMA <> 'mysql' AND
TABLE_SCHEMA <> 'information_schema' AND
TABLE_SCHEMA <> '.mysqlworkbench' AND
TABLE_SCHEMA <> 'performance_schema'
);
SELECT DISTINCT CHARACTER_SET_NAME, COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE (
TABLE_SCHEMA <> 'sys' AND
TABLE_SCHEMA <> 'mysql' AND
TABLE_SCHEMA <> 'information_schema' AND
TABLE_SCHEMA <> '.mysqlworkbench' AND
TABLE_SCHEMA <> 'performance_schema'
);
SHOW VARIABLES
WHERE VARIABLE_NAME LIKE 'CHARACTER\_SET\_%' OR
VARIABLE_NAME LIKE 'COLLATION%';
如果前两种方法没有错误,那么我倾向于:
我不排除以下任何一个问题:
>
周围可能存在的python连接配置问题
数据库排序规则未设置为处理外语
超过最大值(字段值)
隐藏字符或unicode字符
请更新您的问题,当您有更多的信息,我会做同样的我的回答,以帮助您解决您的错误。
希望这对你有帮助,一切顺利!
您的错误
Warning: (1265L, "Data truncated for column
使我相信这是双引号
在您的“字段终止”检查周围,以确保您的数据在错误的字段中没有逗号。这将导致您的数据在运行命令行时发生移动。因为gui是“足够聪明的”来处理这个问题。但是命令行是文字的!
问题 在本机硬盘上有一个HTML文件,需要对它进行解析从中抽取数据或进行修改。 办法 可以使用静态Jsoup.parse(File in, String charsetName, String baseUri) 方法: File input = new File("/tmp/input.html"); Document doc = Jsoup.parse(input, "UTF-8", "http
问题内容: 有时,我必须重新导入项目的数据,从而将大约360万行读入MySQL表(当前为InnoDB,但实际上我并不局限于此引擎)。事实证明,“加载数据infile …”是最快的解决方案,但它有一个折衷:-当不使用密钥导入时,导入本身需要大约45秒,但是密钥创建需要一定的时间(已经运行了20分钟。)。 )。-使用表上的键进行导入会大大降低导入速度 在表的3个字段上有键,引用了数字字段。有什么办法可
我有两个jar文件。第一个只包含接口 在请求的基础上,我试图从中加载我的实现类。jar文件存在于某个文件夹中,在运行时使用URLClassLoader。 课程正在加载 我确信这是由于我使用不同的类加载器来加载类,但是我如何克服类之间的兼容性问题。 同样的代码可以在正常的J2SE环境中工作,但不能在JBoss环境中工作。 如果我的查询不清楚,请让我知道我也可以粘贴源代码。
下面的代码是在pyspark shell中运行时的工作文件,但在spark submit master Thread中执行时失败。 我在这里怎么了? 错误:
好的,基本上,我尝试使用这里描述的方法JarFileLoader来加载一个jar,其中包含一个类,该类的使用方式与类路径上的相同(类名将是动态的,因此我们可以添加任何jar任何类和程序将通过解析文本文件加载它,在主线中)。 问题是当我调试和检查URLClassLoader对象时 行: getResource()在参数中找不到类名。 有人已经尝试过用这种方式加载jar文件了吗? 谢谢。 加载器: 主
我在使用Java和FXML文件时遇到了一个问题。 现在我找了好几个小时,找不到任何解决我问题的东西,所以我最后的希望是针对我的具体情况提出问题(我知道像这个问题和其他问题,但没有一个真正帮助我在这方面。 简单说明:我有一个Eclipse Java项目,我的类(对于这个问题很重要)在包[Project Name]/src/measurements.gui中。我的FXML文件在[Project Nam