美文网首页
sql server

sql server

作者: 我就问你醉了没 | 来源:发表于2017-11-16 10:18 被阅读0次

    关于数据库文件mdf:

    1.如果用navicat新建一个数据库,那么此时他会默认创建的是ndf类型的文件,而且文件存放路径在sql server默认路径(一般是安装路径下的某个路径。即使你修改了默认路径,navicat的默认存放路径也不会变)。所以每次创建数据库要修改为mdf文件,修改mdf和ldf文件的路径(两个要分别改)。

    2.mdf文件可以复用。在Microsoft SQL Server Management Studio右击目标数据库,执行分离。然后将mdf与ldf(有时没有ldf也可以)复制到目标机器上。在目标机器的管理工具中,右击选择附加,选择刚才的mdf与ldf文件,即可使用。

    其中:

    (1)当一块磁盘快满了时,经常需要如此操作,将一些数据迁移到新盘中。请一并将默认存放路径修改。

    右击本机数据库,选择属性,选择数据库设置,修改默认位置。

    (2)经常会有人只给你mdf文件,但没有ldf,可以在附加中将ldf文件删除。   一般也能附加上,如果不行再找同事要。

    (3)如果用navicat默认生成了数据库文件,发现是ndf类型,则需要先分离,把后缀ndf改成mdf,在本机再附加一次:数据库文件选择刚才改成mdf的文件。之后再分离,将mdf与ldf拷贝走。如不这样,拷贝到目标机器后无法正常读取ldf文件,即使吧ldf文件删除也不行。

    关于性能:

    1.用sql server处理亿级以下的数据是很快的,第一次接触的话你会因其速度感觉到惊喜。但如果要是处理亿级以上的数据,真的让人头痛,能分表就分表吧。

    关于导出文件、或者说将表跨数据迁移:

    1.通过bcp导出成csv文件是很快的,真的,没具体测,大约3-5分钟能导出1亿数据(不过到了4亿多左右会变慢很多,具体原因没研究,不知道是数据库还是文件系统的问题),这是一个不错的迁移方式,导出成的csv文件再用awk切分为多个文件,相当于分表,再让其他数据库读取文件。

    bcp的命令举例如下:

    导入:bcp hk_red.dbo.LineDataHK in F:\HK_data\导入文件\tablename.csv -e F:\HK_data\导入文件\error.txt -c -T -t"|@@|@|" -Uusername -P"password"

    导出:bcp hk_red.dbo.LineDataHK out F:\HK_data\导入文件\tablename.csv -e F:\HK_data\导入文件\error.txt -c -T -t"|@@|@|" -Uusername -P"password" 

    按sql导入:bcp hk_red.dbo.LineDataHK queryout F:\HK_data\导入文件\tablename.csv -e F:\HK_data\导入文件\error.txt -c -T -t"|@@|@|" -Uusername -P"password"

    2.小的表可以用navicat直接传输,很方便。而且会处理字符集的问题,例如中文,用bcp处理的文件,中文的字符集是微软的,不是utf8。

    3.当然,bcp导出的文件也是有方法转成utf8的,需要借助工具cygwin。

    4.导入文件报错:右截断

    这是因为你的分割符在数据中出现了,导致按分隔符切分后会比原表多出一列到多列。

    解决办法就是到出的分隔符设定为两到三个,例如:|@|   这种。

    如果还是不行,要么报错的行单独特殊处理,要么分隔符在多几个。

    相关文章

      网友评论

          本文标题:sql server

          本文链接:https://www.haomeiwen.com/subject/ruakvxtx.html