2017-01-16 2 views
1

У меня есть таблица tbl_mak в SQL Server, которые содержат это следующие данные:Экспортный типа бит данных данных из SQL Server в PostgreSQL

Таблица:

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

Использования 0/1 вместо истинного, ложного – McNets

ответ

4

Создайте стол, как показано ниже; Используйте boolean тип для поля

CREATE TABLE tbl_mak 
(
    col_bit boolean 
); 

и импортировать данные из текстового файла, как показано ниже

COPY tbl_mak FROM 'D:\mak.txt' WITH CSV HEADER DELIMITER AS ' ' 
+0

ли это импорт решения '0/1' так же, как на SQL-сервере в PostgreSQL? – MAK

+0

Потому что я не хочу хранить что-то вроде 't/f' вместо' 0/1'. – MAK

+0

Вы можете импортировать логические значения либо «True/False», либо «0/1», а Postgres сохраняет логические значения как 't/f' –

0

От Postgres docs

Writing bit without a length is equivalent to bit(1)

Так говоря длина

CREATE TABLE tbl_mak 
(
    col_bit bit(5) 
); 

Я думаю, что вы можете использовать Boolean Type вместо BIT

Действительно буквенных значений для «истинных» государств являются:

TRUE 
't' 
'true' 
'y' 
'yes' 
'1' 

Для «лжи», могут быть использованы следующие значения:

FALSE 
'f' 
'false' 
'n' 
'no' 
'0' 
0

В Postgresql бит тип данных отличается от SQL-сервера в Postgres это

bit [ (n) ] fixed-length bit string 

но в SQL-сервере его a

integer data type that can take a value of 1, 0, or NULL 

так в файле его TRUE/FALSE, и когда вы пытаетесь импортировать данные в PostgreSQL его получает сообщение об ошибке больше, пожалуйста, пройти через link

Смежные вопросы