MariaDB导入CSV
下午的人们 我正在尝试将CSV导入MariaDB上的表中 表上的列是MariaDB导入CSV,mariadb,Mariadb,下午的人们 我正在尝试将CSV导入MariaDB上的表中 表上的列是 MariaDB [snipeit]> show columns from locations; +------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--
MariaDB [snipeit]> show columns from locations;
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | text | YES | | NULL | |
| city | varchar(191) | YES | | NULL | |
| state | varchar(191) | YES | | NULL | |
| country | varchar(191) | YES | | NULL | |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
| user_id | int(11) | YES | | NULL | |
| address | varchar(191) | YES | | NULL | |
| address2 | varchar(191) | YES | | NULL | |
| zip | varchar(10) | YES | | NULL | |
| deleted_at | timestamp | YES | | NULL | |
| parent_id | int(11) | YES | | NULL | |
| currency | varchar(10) | YES | | NULL | |
| ldap_ou | varchar(191) | YES | | NULL | |
| manager_id | int(11) | YES | | NULL | |
| image | varchar(191) | YES | | NULL | |
+------------+------------------+------+-----+---------+----------------+
CSV看起来像
id name city state country created_at updated_at user_id address address2 zip deleted_at parent_id currency ldap_ou manager_id image
testname NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
id为空
但警告显示
MariaDB [snipeit]> show warnings;
+---------+------+------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+------------------------------------------------------------------+
| Warning | 1366 | Incorrect integer value: '' for column 'id' at row 1 |
| Warning | 1265 | Data truncated for column 'created_at' at row 1 |
| Warning | 1265 | Data truncated for column 'updated_at' at row 1 |
| Warning | 1366 | Incorrect integer value: 'NULL' for column 'user_id' at row 1 |
| Warning | 1265 | Data truncated for column 'deleted_at' at row 1 |
| Warning | 1366 | Incorrect integer value: 'NULL' for column 'parent_id' at row 1 |
| Warning | 1366 | Incorrect integer value: 'NULL' for column 'manager_id' at row 1
知道为什么会这样吗?我想如果一个字段有NULL,我可以在它上面使用NULL
我用来导入的命令是
load data local infile '/media/Share1/CSV_Files/test.csv' into TABLE locations fields terminated by ',' ignore 1 lines;
干杯因为
id
是一个自动增量
字段,它是自动生成的。您需要从CSV文件中删除id
列。有很多错误:
name,city,state,country,created_at,updated_at,user_id,address,address2,zip,deleted_at,parent_id,currency,ldap_ou, manager_id,image;
testname,,,,,,,,,,,,,,,;
并使用以下命令:
load data local infile '/media/Share1/CSV_Files/test.csv' into TABLE locations fields terminated by ',' LINE TERMINATED BY ";" ignore 1 lines;
load data local infile '/media/Share1/CSV_Files/test.csv'
into table locations
fields terminated by ','
line terminated by ";"
ignore 1 lines
(name,city,state,country,created_at,updated_at,user_id,address,address2,zip,deleted_at,parent_id,currency,ldap_ou,manager_id,image)
set id = null;
编辑:
您的命令应该指定出现在csv文件中的列,如下所示(顺序正确!!):
编辑2:
使用加载数据读取数据时,空列或缺少的列将更新为“”。若要将空值加载到列中,请在数据文件中使用\N。在某些情况下,也可以使用文字NULL。见第13.2.7节“加载数据语法”
从
因此,您的csv应该如下所示:
name,city,state,country,created_at,updated_at,user_id,address,address2,zip,deleted_at,parent_id,currency,ldap_ou, manager_id,image;
testname,\N,\N,\N,\N,\N,\N,\N,\N,\N,\N,\N,\N,\N,\N,\N;
编辑3:它可能是最终的解决方案。不要在csv文件中指定id字段,就像上面的“编辑2”中那样。并使用以下命令:
load data local infile '/media/Share1/CSV_Files/test.csv' into TABLE locations fields terminated by ',' LINE TERMINATED BY ";" ignore 1 lines;
load data local infile '/media/Share1/CSV_Files/test.csv'
into table locations
fields terminated by ','
line terminated by ";"
ignore 1 lines
(name,city,state,country,created_at,updated_at,user_id,address,address2,zip,deleted_at,parent_id,currency,ldap_ou,manager_id,image)
set id = null;
您计划如何映射CSV文件中的列
manager\u id
等,这些列在现有表格中似乎没有对应项?抱歉,更新了OP,显示了错误的表格您下面有两个答案,它们似乎在正确的轨道上。它不是CSV文件,而是TSV文件(C代表逗号,T代表制表),所以,如果您想在未来数据加载查询中正确处理分隔符,就必须相应地设置分隔符。当然,还有很多其他的事情是去年以来整理出来的。没关系,我已经用一些其他的建议编辑了我的答案,如果之后一切正常,请毫不犹豫地接受我的答案。谢谢你,快点。感谢您在空字段中输入\N,我不希望工作正常。但是如果我删除id字段,所有字段都将为空。。无论如何,输入id字段但保持为空似乎很好。适用于我的命令是“将数据本地填充加载到以”“忽略1行”“结尾的表位置字段中;”media/Share1/CSV_Files/test.CSV;“`”当我使用你的(名字,城市,等等)时,它会抱怨语法不正确。我现在唯一的警告是第1行“id”列的“warning”1366“error integer value:”``要修复第1行“id”列的“warning”1366“error integer value:”,您应该尝试使用\N而不是将其保留为空