我在将数据从 csv 导入 MySQL 表时遇到问题。我正在尝试使用“加载数据文件”,但每次我尝试运行我的代码时,我都会得到
"Error Code: 1265. Data Truncated for column 'DIP20' at row 237"
问题源于第 237 行的 DIP20 列是 csv 文件中的第一个空条目,但我的研究表明 MySQL 应该将空条目读取为 0。这将阻止整个导入运行,并且没有数据进入我的表。我一直在尝试找到一种方法来指示 MySQL 接受 Null,但一直找不到任何东西。
我在该领域注意到的其他线程建议修改源数据以将“\N”放入每个空值中,但这实际上是不切实际的,原因有几个。首先,我有大量的数据要处理,其次,当我完成开发这个数据库时,我必须把它留给其他人,当收到更多数据时,他们都没有时间、能力或意愿来编辑数据未来。
如果有人能提出一种方法来让这个导入运行而不会落在空值上,我将非常感激。
我试图运行的代码是:
LOAD DATA INFILE '\\\\server\\path\\morepath\\file.csv'
INTO TABLE deidata.tbl_HHDataImport
FIELDS TERMINATED BY ',' ESCAPED BY '\\'
LINES TERMINATED BY '\r\n' STARTING BY ''
IGNORE 1 LINES
表结构如下:
table tbl_HHDataImport
(
CNF_ID VARCHAR(10) PRIMARY KEY,
Read_date Datetime,
DIP1 float,
DIP2 float,
//...{48 DIP columns here}...
DIP47 float,
DIP48 float
)
(这是一个临时表,我将从该表中将数据转换为适当的关系结构。这是我收到的数据的格式,我无法更改。)
我习惯于在 MS SQL Server 中开发数据库,但目前正在为一家资金有限的非营利组织工作,因此我被要求使用 MySQL。在我遇到这个问题之前,我以为我可以接受它。我正在使用 MySQL 5.6.13 和 MySQL 工作台 6.0。
提前致谢
汤姆