我在SQL Server中有表tbl_mak
,其中包含以下数据:
表:
CREATE TABLE tbl_mak
(
col_bit bit
);
insert into tbl_mak values(1);
insert into tbl_mak values(0);
导出到平面文件(.txt)后,我得到以下值:
col_bit
True
False
我在PostgreSQL 9.5中有下表:
CREATE TABLE tbl_mak
(
col_bit bit
);
现在我想将导出的数据从SQL Server导入PostgreSQL。
脚本:
\COPY tbl_mak FROM 'D:\mak.txt'
收到错误:
ERROR: bit string length 5 does not match type bit(1)
答案 0 :(得分:4)
创建如下表格;使用boolean
类型作为字段
CREATE TABLE tbl_mak
(
col_bit boolean
);
并从文本文件中导入数据,如下所示
COPY tbl_mak FROM 'D:\mak.txt' WITH CSV HEADER DELIMITER AS ' '
答案 1 :(得分:0)
写入没有长度的位等同于位(1)
所以提到长度
CREATE TABLE tbl_mak
(
col_bit bit(5)
);
我认为您可以使用Boolean Type代替BIT
“true”状态的有效文字值为:
TRUE
't'
'true'
'y'
'yes'
'1'
对于“false”状态,可以使用以下值:
FALSE
'f'
'false'
'n'
'no'
'0'
答案 2 :(得分:0)
在Postgresql中,位数据类型与postgres中的SQL-Server不同,它是
bit [ (n) ] fixed-length bit string
但在SQL-server中它的一个
integer data type that can take a value of 1, 0, or NULL
所以在文件中它为TRUE / FALSE,并且当你试图在postgresql中导入数据时它会出现更多错误请通过link