标签归档:数据库

读取mdf格式的sql server数据文件,并将数据以CSV格式导出

多年以前使用过微软的SQL Server 2000数据库。留下一个mdf格式的数据文件,临时用到想把它导出。过程真可以使用灾难来形容。现在不用使用微软的东西来工作了,真是好运啊。

我使用的是MS SQL Express 2005。要在Windows 7上安装,得安装SP4版本。安装后使用它附加上mdf文件。数据库就可以在上面查询了。在查询窗口输入:

EXEC xp_cmdshell
'BCP "dbname.dbo.tablename" out d:\aa.csv -t , -T -SMY-PC\SQLEXPRESS -w'

这样的命令,就能将数据导出CSV到文件。其中-t后面的是分隔符,这里使用的是逗号,注意这样如果原来数据中也有逗号,会产生数据分隔出问题,这时可以改用其它符号(如####)。-w是指定使用unicode文字编码输出。重点是要加-S参数,指定自己的PC名称\SQLEXPRESS, 不然会连接出错,错误提示如:

[SQL Native Client]Named Pipes Provider: Could not open a connection
to SQL Server [2].
[SQL Native Client]Login timeout expired
[SQL Native Client]An error has occurred while establishing a
connection to the server. When connecting to SQL Server 2005, this
failure may be caused by the fact that under the default settings SQL
Server does not allow remote connections.

发表在 信息处理 | 标签为 , , , | 留下评论

mysql不能储存生僻汉字?试试utf8mb4字符集

今天发现存进mysql的数据部分丢失了。发现丢失的都是一些生僻的汉字。我这个mysql使用的是utf8字符集,之前一直以为不会发生这种问题,今天才看到了。而且这个问题很早就存在了。这是mysql的一个bug,它的UTF-8字符集只能存储3字节字符,而有部分生僻的汉字是4个字节的,存入时就会出错:

ActiveRecord::StatementInvalid: Mysql::Error: Incorrect string value: ‘\xF0\x90\x8D\x83\xF0\x90…’ for column ‘content’ at row 1

上面的官方bug页面说要到mysql6.0才会解决。其实这个问题在mysql 5.5就解决了。5.5或以上的mysql都可以通过使用utf-16或utf8mb4等字符集解决这个问题。

不过使用ruby on rails的话可能需要一些额外的设置

发表在 信息处理 | 标签为 , , , , , | 留下评论

linux下使用logrotate自动备份mysql数据库

logrotate是linux下的一个日志文件管理工具。apache,nignx或系统的log文件如不处理, 正常情况下会慢慢变的大, 久了, 硬盘就会爆掉。 logrotate(配合cron)就是用来周期性分割、压缩、删除日志文件用的。前段时间在找mysql数据库的自动备份方法的时候, 在 http://islandlinux.org/howto/automated-mysql-backups 看到了使用logrotate来备份mysql数据库的偏方, 感觉不错, 在这里和大家分享一下。

继续阅读

发表在 站长文档 | 标签为 , , , , | 留下评论