Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql使用制表符分隔插入位_Mysql - Fatal编程技术网

MySql使用制表符分隔插入位

MySql使用制表符分隔插入位,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, StartDa

我使用制表符分隔的文件将数据插入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文件时,您的值似乎被隐式引用为字符串。在MySQL 5.0.3之后的版本中使用
BIT
类型时,它将用作位字段(例如“11001”),而不是布尔类型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文档似乎涵盖了这个问题:

请参见本页中间的以下部分:

无法使用二进制表示法加载位值


这里描述了一个有点笨拙的解决方法。

您的输入数据是什么样子的?请发布“membership”表的结构和membership.txt文件的一些示例行。@Michael请检查updates@KillerGearzMySQL的早期版本将
bit
解释为
tinyint(1)
但较新版本实际上有一个二进制
类型。尝试将您的表定义为
时事通讯TINYINT(1)