sql - 如何从 SQL Server 创建可移植插入?

标签 sql sql-server database database-agnostic portable-database

现在它生成像这样的插入

INSERT [Bla] ([id], [description], [name], [version])
VALUES (CAST(1 AS Numeric(19, 0)), convert(t...

它非常特定于 SQL Server。我想创建一个每个人都可以使用的脚本,与数据库无关。我有非常简单的数据类型 - varchars、数字、日期、位( bool 值)。

我觉得

insert into bla values (1, 'die', '2001-01-01 11:11:11')

应该适用于所有 DBMS,对吧?

最佳答案

一些基本规则:

去掉方括号。在您的情况下,不需要它们——甚至在 SQL Server 中也不需要。 (同时确保您从不在列名或表名中使用保留字或特殊字符)。

如果您确实需要使用特殊字符或保留字(我不推荐这样做),请使用标准双引号(例如“GROUP”)。

但请记住,名称区分大小写:my_tableMY_TABLE 相同,但 "my_table""不同MY_TABLE" 根据标准。同样,这可能因 DBMS 及其配置而异。

CAST 运算符是标准的,适用于大多数 DBMS(尽管并非所有都支持所有可能组合中的转换)。

convert() 是特定于 SQL Server 的,应替换为适当的 CAST 表达式。

尝试以正确的数据类型指定值,永远不要依赖隐式数据转换(因此不要将“1”用作数字)。尽管我认为不需要将 1 强制转换为 numeric() 。

通常我还建议对 DATE/TIMESTAMP 文字使用 ANSI 文字(例如 DATE '2011-03-14'),但 SQL Server 不支持。所以它不会对你有太大帮助。

关于sql - 如何从 SQL Server 创建可移植插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5296363/

相关文章:

sql-server - SQL Server : the maximum number of rows in table

mysql - 如何在数据库中执行一对一关系插入

sql - BigQuery : Converting key-value pairs in Array to columns

mysql - 根据描述的场景从 Sql 表中检索数据

Java JPA - 从在第二次运行时不起作用的实体创建表

sql-server - SQL Server MDF 文件 - 如何备份

sql - 如何删除 SQL 中的重复项但保留一份副本?

PHP/SQL : How to concatenate/combine columns value into one row

mysql - 在 MySQL 上迭代具有条件的行对

sql - PostgreSQL - 将窗口函数分配给别名