mysql 导入csv数据时,Load Data Local Infile的权限

今天要把数据从csv文件导入到mysql中,查看了一下mysql的导入命令:load data infile,其命令格式如下:

    LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE ''file_name.txt'' [REPLACE | IGNORE]
    INTO TABLE table_name
    [FIELDS
    [TERMINATED BY ''\t'']
    [OPTIONALLY] ENCLOSED BY '''']
    [ESCAPED BY ''\\'' ]]
    [LINES TERMINATED BY ''\n'']
    [IGNORE number LINES]
    [(col_name,...)]

由于是本地主机,不在mysql服务器上,因此使用Local选项,但是总是会报错:“The used command is not allowed with this MySQL version”。

查了些资料才发现Load Data的权限不对,有两种方法可以解决:

1、通过在/etc/mysql/my.cnf文件中添加local-infile = 1来修改权限是的可以加载本地文件。当然也可以通过local-infile = 0来禁止掉。修改my.cnf后必须重启mysql。

2、通过启动时,>mysql -uroot -ppassword --local-infile = [0|1] 来修改权限。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL的`LOAD DATA LOCAL INFILE`命令中,当导入数据MySQL会根据数据文件中的内容来进行数据类型推断。如果数据文件中的某一列被解释为整数类型,而实际上该列包含了字符串数据(如VARCHAR类型),那么MySQL会尝试将该列转换为整数类型。 这种情况下,可能是由于数据文件中的某些行中的数据不符合该列定义的数据类型,导致了自动转换错误。MySQL会根据一些规则进行自动转换,例如将非数字字符转换为0或忽略该行数据。 为了避免这种情况,你可以在`LOAD DATA LOCAL INFILE`命令中明确指定每列的数据类型,而不依赖于自动推断。使用`FIELDS TERMINATED BY`和`LINES TERMINATED BY`来指定字段和行的分隔符,并使用`SET`关键字来指定每列的数据类型。 例如,假设你有一个包含字符串的CSV文件(以逗号分隔),其中一列应该是VARCHAR类型。你可以使用以下命令来导入数据并明确指定数据类型: ```sql LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE your_table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (column1, @var1, column3) SET column2 = CAST(@var1 AS VARCHAR(255)); ``` 在上面的命令中,我们使用了一个用户变量`@var1`来临存储数据,并使用`CAST`函数将其转换为VARCHAR类型,并将其赋给目标列`column2`。 通过明确指定每列的数据类型,你可以确保导入数据不会发生意外的类型转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值