我正在尝试将数据从 SPSS(统计程序)导出到本地 mysql 数据库。出于某种原因,我收到“列数与值计数不匹配”消息。当 SQL 语句中的某些内容出错时,我已经习惯了该错误。但是在许多不同的环境中进行了数小时的测试后,很明显这不是问题所在。
SPSS 语法在 SQL 中。例如,可以使用的语法是这样的:
SAVE TRANSLATE /TYPE=ODBC
/CONNECT='DSN=localhost;UID=root;PWD=!S%E&u#k;'
/ENCRYPTED
/MISSING=IGNORE
/SQL='CREATE TABLE test1 (jaar double , maand double , dag double , huishoud double , persoon double , verpl double , rit double )'
/REPLACE
/TABLE='SPSS_TEMP_2'
/KEEP=jaar, maand, dag, huishoud, persoon, verpl, rit
/SQL='INSERT INTO test1 (jaar, maand, dag, huishoud, persoon, verpl, rit) SELECT jaar, maand, dag, huishoud, persoon, verpl, rit FROM SPSS_TEMP_2'
/SQL='DROP TABLE SPSS_TEMP_2'.
运行此命令后,mysql 数据库如下所示:
CREATE TABLE `test1` (
`jaar` double DEFAULT NULL,
`maand` double DEFAULT NULL,
`dag` double DEFAULT NULL,
`huishoud` double DEFAULT NULL,
`persoon` double DEFAULT NULL,
`verpl` double DEFAULT NULL,
`rit` double DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
使用以下数据:
INSERT INTO `test1` (`jaar`, `maand`, `dag`, `huishoud`, `persoon`, `verpl`, `rit`) VALUES
(2005, 1, 3, 1, 1, 1, 1),
(2005, 1, 3, 0, 0, 1, 1),
(2005, 1, 3, 1, 1, 1, 1),
(2005, 1, 3, 0, 0, 1, 1),
(2005, 1, 3, 0, 0, 1, 1),
(2005, 1, 3, 0, 0, 1, 1),
(2005, 1, 3, 0, 1, 1, 1),
(2005, 1, 3, 0, 0, 1, 1),
(2005, 1, 3, 0, 0, 1, 1),
(2005, 1, 3, 0, 0, 1, 1);
到目前为止,一切都很好。但是,完整的数据集带有 129 个变量(sql 字段)。第一个给出错误的称为“ritid”。当它与其他人一起插入时,它会停止整个过程。但即使单独插入,它也会破裂。它创建表但没有任何数据。如下所示。出现这种类型的错误对我来说并不奇怪。有人能给点建议吗?
SAVE TRANSLATE /TYPE=ODBC
/CONNECT='DSN=localhost;UID=root;PWD=!l*z%J,[;'
/ENCRYPTED
/MISSING=IGNORE
/SQL='CREATE TABLE Test2 (ritid double )'
/REPLACE
/TABLE='SPSS_TEMP_2'
/KEEP=ritid
/SQL='INSERT INTO Test2 (ritid) SELECT ritid FROM SPSS_TEMP_2'
/SQL='DROP TABLE SPSS_TEMP_2'.
>Error # 6491. Text: Case #1 has been dropped
>Insert record failed
>Execution of this command stops.
>[Actual][MySQL] Column count doesn't match value count at row 1
>Error # 6487
>Write request failed - couldn't write any data.
mysql数据库:
CREATE TABLE `Test2` (
`ritid` double DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
(如前所述,这个中没有数据)
编辑:跳过“drop SPSS_TEMP_2”命令时,SPSS_TEMP_2 数据库与 Test2 数据库完全相同。