標籤歸檔:數據庫

讀取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數據庫的偏方, 感覺不錯, 在這裡和大家分享一下。

繼續閱讀

發表在 站長文檔 | 標籤為 , , , , | 留下評論