如何从mysql的备份sql文本里按CREATE TABLE标记来分割成小sql文件?
这个解析不好弄,其实可以换一种思路,把所有的表名全查出来,然后在按表名生成导出脚本,生成的文件就一个表一个了。
shell样例如下,仅供参考,请在自己测试环境下测试。脚本可以包装在一个大的shell里面一起执行。
一、生成所有的表名
mysql<<EOF
use cpai;
show tables;
quit
EOF
输入结果保持到tmp.txt
二、生成导出单个表数据的脚本
awk 'NR>1' tmp.txt >tables.txt #从第二行开始取
cat tables.txt |awk '{printf "mysqldump 数据库名 %s >%s.sql\n",$1,$1}' >mysql_dump_sig.sh
三、执行mysql_dump_sig.sh脚本,既可以导出一个个表到单独的每个文件里面。
mysql的代码可以在sqlserver上运行吗?
不能直接在SQL Server上运行。
因为MySQL和SQL Server是两种不同的数据库管理系统,它们的语法和功能有所不同。虽然它们都使用SQL语言,但是在具体的实现上有很大的差异。因此,如果要在SQL Server上运行MySQL的代码,需要进行一些修改和适配。
具体来说,需要将MySQL的代码转换为SQL Server支持的语法和格式。这可能涉及到数据类型、函数、存储过程、触发器等方面的差异。可以使用一些工具或者手动修改来完成这个过程。
另外,需要注意的是,即使将MySQL的代码转换为SQL Server支持的语法和格式,也不能保证完全兼容。因此,在将MySQL的代码迁移到SQL Server上之前,需要进行充分的测试和验证,确保代码能够正确地运行并且不会出现数据丢失或损坏等问题。
mysql和sqlserver存在语法差异,直接导sql是不行的,不过可以通过sqlserver的bcp命令把 表里的数据导成指定格式的txt文件,比如列之间用逗号分割,
行之间用\n\r分割这样的数据,mysql 就可以通过 load data infile命令来导入到库里因为sqlserver 不熟悉,
所以bcp命令需要你自己研究下,mysql的 load data语法你可以参考:load data infile '/tmp/result.text' into table test_table fields terminated by ',' lines terminated by '\n' ;意思是字段之间用逗号分割,行之间用\n分割,数据文件是result.text
mysql的最大数据存储量是多少?
一般提这种问题的都是新手,好吧,简单回答下吧。
1、从MySQL 3.23开始,MySQL单表最大限制就已经扩大到了64PB了(官方文档显示)。也就是说,从目前的技术环境来看,MySQL数据库的MyISAM存储 引擎单表大小限制已经不是有MySQL数据库本身来决定,而是由所在主机的OS上面的文件系统来决定了。
2、没有人会那么去存数据的,因为查询速度太慢了,这时候就分表了,比如垂直分割,水平分割等等