PostgreSQL 8.1 轟動發布,我也打算將原來使用 SQL Server 的一些應用遷移到 PostgreSQL 上,首先需要遷移的是表,那么這就必須要先搞清楚這兩個數據庫中的數據類型的映射關系。查了下 PostgreSQL 文檔特制作如下對應表格,以饗各位。
SQL Server 2000 |
Microsoft Jet-SQL 4.0 |
PostgreSQL 8.x |
bigint |
DECIMAL |
bigint |
binary(n) |
BINARY(n) |
bytea(n) |
bit |
BIT |
boolean, bool |
char(n) |
CHAR(n) |
char(n) |
datetime |
DATETIME |
timestamp(date, time) |
decimal |
DECIMAL |
decimal |
float |
FLOAT |
real, float4 |
image |
IMAGE |
bytea |
int |
INT |
integer, int, int4 |
money |
CURRENCY |
decimal |
nchar(n) |
NCHAR(n) |
char(n) |
ntext |
LONGTEXT |
text |
numeric |
DECIMAL |
numeric |
nvarchar(n) |
NCHAR VARYING(n) |
varchar(n) |
real |
REAL |
real |
smalldatetime |
DATETIME |
timestamp(date, time) |
smallint |
SMALLINT |
smallint, int2 |
smallmoney |
CURRENCY |
decimal |
text |
LONGTEXT |
text |
timestamp |
BINARY |
無 |
tinyint |
BYTE |
無 |
uniqueidentifier |
GUID |
無 |
varbinary(n) |
VARBINARY(n) |
bytea(n) |
varchar(n) |
VARCHAR(n) |
varchar(n) |
注意:PostgreSQL 中的 money(貨幣)數據類型現在已經廢棄,用 numeric 或 decimal 以及和 to_char 函數一起使用就可以取代它。
* SQL Server 中的 datetime、smalldatetime 數據類型均包含日期和時間部分,區別只在于精度不同。其對應于 PostgreSQL 中的 timestamp 類型(包含日期和時間)。在 PostgreSQL 中如果只需要日期部分,則可以使用 date 類型,而只需要時間部分則可使用 time 類型。
* PostgreSQL 中的 bytea(n) 始終為變長的二進制字節數組,相當于 SQL Server 中的 varbinary(n),如果沒有指定 bytea 的最大字節數則表示為不限長度的變長字節數組,相當于 SQL Server 中的 image 數據類型。
* PostgreSQL 中的字符類型沒有像 SQL Server 中有對應的本地文本類型和國際化文本類型的兩種文本數據類型的區別,存儲在 PostgreSQL 中的文本類型的數據是否國際化還是本地化取決于數據庫的文本編碼設置。
為了保證數據存儲的國際化,建議將數據庫的文本編碼方式設置為 UTF-8 或者 Unicode,以確保存儲的文本可被不同地區和文化下的用戶查看和存儲。
* 對于 GUID 類型的數據,在 PostgreSQL 中可以使用 bytea(16) 來保存,可用字節數組函數來對其進行比較等操作。
posted on 2006-02-17 19:08
黑咖啡 閱讀(1792)
評論(0) 編輯 收藏 所屬分類:
Postgre