分两步处理,第一步是将csv导入到mysql。没有使用mssql自带客户端的导入功能,因为这个功能太坑,尝试N多种方法仍然是报错,因此选择先转换成mysql做中间步骤。
csv/text导入MySQL
一批很大的csv数据(其实并非csv,而是制表符分隔字段),要导入到mssql数据库里。
首先在cygwin下使用awk对数据做预处理,只筛选出字符数正确的行。并且在首行加入列名,以便导入工具自动做列对应。
阅读全文——共991字
标签存档: mssql
MySQL(csv,text)数据导入到mssql方法参考
ms sql server下unix时间戳函数unix_timestamp, from_unixtime(与mysql兼容)
直接上代码:
CREATE FUNCTION UNIX_TIMESTAMP (@ctimestamp datetime) RETURNS integer
AS
BEGIN
阅读全文——共522字
microsoft sql server 2008数据库恢复到2005(版本降级)
实例:一个mssql 2008的数据库备份,要还原到2005上,本来以为备份时把数据库兼容级别为2005或2000、再备份,就可以还原到2005上,但事实上不行。
通过google找到了一个办法,有点麻烦,但还是可以比较完美还原的。
高版本上导出兼容在低版本上的创建数据库结构的的sql脚本,拿到低版本上执行,创建数据库及表结构,然后使用导入数据功能,从高版本上导入到低版本上。导入时,要对每个表勾选“启用标识插入”。
具体来说:
阅读全文——共509字
php+MSSQL的坑:(n)varchar型字段被截断
很自虐的搭配php+MSSQL,太多的坑,就不说text型被截断了。
受限于现有的asp+mssql应用,新增的部分功能使用php开发。对一个表的读写,后台使用asp,读写都很正常。前台一个调用是php写的,但就是遇到一个诡异的问题,要对数据做一个很复杂的解析处理,结果是数据丢失一部分。一层一层的输出,最后才发现是从数据库读出来了数据就不完整,这可奇怪了。又不是text型的数据,加了ini_set()修正text型默认长度限制,也不行。
但被截断长度很奇怪,恰恰是254个字节,似乎正好是较老的mssql里varchar()的默认最大长度;而该字段的实际是varchar(1000);
难道是字段类型问题?
阅读全文——共533字
ms sql server中获取上次插入记录的标识id号(类似mysql LAST_INSERT_ID)
在当前连接会话中执行sql语句 SELECT LAST_INSERT_ID=@@IDENTITY
Microsoft SQL server性能优化必备工具
这里说的工具并不一定是独立软件
1 查看sql语句执行花费的时间、IO开销
在mssql客户端执行sql语句时,先在当前会话里执行下面语句
SET STATISTICS IO ON
阅读全文——共402字
微软官方提供的用于监控MS SQL Server运行状况的工具及SQL语句
Microsoft SQL Server 2005 提供了一些工具来监控数据库。 …
ms sql server 查看服务器当前的连接会话及会话信息(客户端ip地址,协议,时间,读写情况等)
ms sql server 查看服务器当前的连接会话及会话信息(客户端ip地址,协议,时间,读写情况等)
select * from sys.dm_exec_connections
这实际上是master数据库里的一个系统视图,读出来后有不少字段,如client_net_address, protoco_type, connect_time, num_read, num_write等,很明白,就不多说了。
btw,master数据库里有很多系统视图,如:dm_exec_sessions, dm_fts_memory_pools, dm_os_hosts, dm_os_memory_allocations, dm_os_memory_objects, dm_os_threads, sql_logins, types等,很有参考意义