MySql 插入位使用制表符分隔

标签 mysql

我正在使用制表符分隔文件将数据插入 MySql 数据库

在位字段中,我得到了 0 和 1 作为值,但是当我使用下面的命令将数据插入数据库时​​,它会将 0 转换为 1。

load data local infile 'c:/membership.txt' into table membership;

因此,位列在每一行中的值为 1。

表的结构是

       Create table Membership
    (
    MemberShipId int not null AUTO_INCREMENT, 
StartDate datetime not null, 
EndDate datetime not null, 
AgeGroup tinyint, 
Newsletter bit, 
Donation decimal(7,2), 
FavouriteShow varchar(50), 
Comments varchar(200), 
MemberId int not null, 
PRIMARY KEY (MemberShipId),
CONSTRAINT fk_Member FOREIGN KEY (MemberId) REFERENCES Member (MemberId)
    );

样本输入是

1   2012-01-01  2012-01-01  0   0   \N  \N  1
2   2012-01-01  2012-01-01  1   0   \N  \N  2
3   2012-01-01  2012-01-01  1   0   \N  \N  3
4   2012-01-01  2012-01-01  1   0   \N  \N  4
5   2012-01-01  2012-01-01  0   0   \N  \N  5
6   2012-01-01  2012-01-01  0   0   \N  \N  6

最佳答案

导入 CSV 文件时,您的值似乎被隐式引用为字符串。在 5.0.3 之后的 MySQL 中使用 BIT 类型时,它旨在用作位字段(例如“11001”),而不是 bool 类型 1/0。字符串值 '0''1' 似乎都被解释为非空数据,您不只是得到 0。

相反,您可以使用 TINYINT(1) 类型或其同义词 BOOLEAN,它将仅支持数值 1 或 0。

Create table Membership
(
  MemberShipId int not null AUTO_INCREMENT, 
  StartDate datetime not null, 
  EndDate datetime not null, 
  AgeGroup TINYINT,
  /* use TINYINT(1) for a boolean  OR use BOOLEAN */ 
  Newsletter TINYINT(1), 
  Donation decimal(7,2), 
  FavouriteShow varchar(50), 
  Comments varchar(200), 
  MemberId int not null, 
  PRIMARY KEY (MemberShipId),
  CONSTRAINT fk_Member FOREIGN KEY (MemberId) REFERENCES Member (MemberId)
);

关于MySql 插入位使用制表符分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11404602/

相关文章:

mysql - 将 Django/MySQL 站点设置为使用 UTF-8

php - 连接查询的计数

php - 如何从 Joomla 2.5 数据库列、字段名称和值中获取值

php - 服务器在 WordPress 上表现不同的问题

php - mysqli_fetch_field() 多次输出字段名称

php - 我如何通过 PHP 将多个单选按钮值作为所有单独的值传递给 MYSQL 数据库,但将它们分成组?

mysql - 如何将日期和日期时间与 Doctrine 进行比较

mysql - 有没有办法在 SQL 中乘以结果?

C# Entity FrameWork MySQL 慢查询 Count()

mysql - 锁定 "local"MySQL 表