【问题标题】:MySQL to MSSQL data types transferMySQL 到 MSSQL 数据类型的传输
【发布时间】:2013-01-22 14:25:02
【问题描述】:

我正在将一个小型数据库从 MySQL 转移到 MSSQL。

当前 MySQL 示例声明: *(有意跳过 Keys 和 Not Null)

CREATE TABLE my_table(
    `id` bigint(20),
    `version` int(10),
    `user_id` tinyint(3) unsigned, /*less then 100*/
    `date_crated` int(11), /*unix time like 1334736752 */
    `image_content` blob,
    `xml_content` longtext /*xml with non english texts, 5000+ character*/
)

还有我的 MSSQL 变体:

CREATE TABLE [my_table](
    [id] bigint,
    [version] int,
    [user_id] tinyint, 
    [date_crated] int,
    [image_content] varbinary(MAX),
    [xml_content] nvarchar(MAX)
 )

我对最后三个没有信心...
这样会不会丢失任何潜在的数据?

【问题讨论】:

  • 为什么使用整数而不是时间类型来存储日期?
  • @eggyal 日期存储为 unix 时间以支持本地化,您能否举一个“临时类型”的示例以及为什么它更好?
  • 不是临时类型; temporal 类型(如,与时间有关)。例如TIMESTAMP,将数据存储为“unix time”,但 MySQL 会知道该值的含义 - 因此它会自动调整会话的 time_zone 的输入/输出。

标签: mysql sql-server transfer


【解决方案1】:

除了date_created 和version 对我来说看起来不错:我会选择bigint(64 位,UNIX 时间戳从 32 位扩大到 64 位)或timestamp --- MSSQL int 是4 字节(32 位)。您还应该检查 version 是否也需要 64 位整数。

【讨论】:

  • 所以bigint 用于(可能很大)实体上的 ID 列是要走的路吗?
  • 这取决于 MySQL 中存储在 ID 中的数据 --- 我们只能根据您提供的 MySQL 架构进行推测。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 2017-07-07
  • 1970-01-01
  • 2015-09-21
相关资源
最近更新 更多