|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。excel|server
SETANSI_NULLSOFF
GO
SETNOCOUNTON
GO
SETLANGUAGESimplifiedChinese
go
DECLARE@tblnvarchar(200),@fldnvarchar(200),@sqlnvarchar(4000),@maxlenint,@samplenvarchar(40)
SELECTd.nameTableName,a.nameFieldName,b.nameTypeName,a.lengthLength,a.isnullableIS_NULLINTO#t
FROMsyscolumnsa,systypesb,sysobjectsd
WHEREa.xtype=b.xusertypeanda.id=d.idandd.xtype=U
DECLAREread_cursorCURSOR
FORSELECTTableName,FieldNameFROM#t
SELECTTOP1_TableNameTableName,
FieldNameFieldName,TypeNameTypeName,
LengthLength,IS_NULLIS_NULL,
MaxLenUsedASMaxLenUsed,SampleValueSample,
CommentCommentINTO#tcFROM#t
OPENread_cursor
FETCHNEXTFROMread_cursorINTO@tbl,@fld
WHILE(@@fetch_status-1)---failes
BEGIN
IF(@@fetch_status-2)--Missing
BEGIN
SET@sql=NSET@maxlen=(SELECTmax(len(cast(+@fld+asnvarchar)))FROM+@tbl+)
--PRINT@sql
EXECSP_EXECUTESQL@sql,N@maxlenintOUTPUT,@maxlenOUTPUT
--print@maxlen
SET@sql=NSET@sample=(SELECTTOP1cast(+@fld+asnvarchar)FROM+@tbl+WHERElen(cast(+@fld+asnvarchar))=+convert(nvarchar(5),@maxlen)+)
EXECSP_EXECUTESQL@sql,N@samplevarchar(30)OUTPUT,@sampleOUTPUT
--forquickly
--SET@sql=NSET@sample=convert(varchar(20),(SELECTTOP1+@fld+FROM+
--@tbl+orderby1desc))
PRINT@sql
print@sample
print@tbl
EXECSP_EXECUTESQL@sql,N@samplenvarchar(30)OUTPUT,@sampleOUTPUT
INSERTINTO#tcSELECT*,ltrim(ISNULL(@maxlen,0))asMaxLenUsed,
convert(nchar(20),ltrim(ISNULL(@sample,)))asSample,CommentFROM#twhereTableName=@tblandFieldName=@fld
END
FETCHNEXTFROMread_cursorINTO@tbl,@fld
END
CLOSEread_cursor
DEALLOCATEread_cursor
GO
SETANSI_NULLSON
GO
SETNOCOUNTOFF
GO
selectcount(*)from#t
DROPTABLE#t
GO
selectcount(*)-1from#tc
select*into##txfrom#tcorderbytablename
DROPTABLE#tc
--select*from##tx
declare@dbnvarchar(60),@sqlnvarchar(3000)
set@db=db_name()
--请修正用户名和口令导出到Excel中
set@sql=execmaster.dbo.xp_cmdshellbcp..dbo.##txoutc:+@db+_exp.xls-w-C936-
Usa-Psa
print@sql
exec(@sql)
GO
DROPTABLE##tx
GO
修复过程包含最多4个阶段,在下面描述。在你开始前,你应该cd到数据库目录和检查表文件的权限,确保他们可被运行mysqld的Unix用户读取(和你,因为你需要存取你正在检查的文件)。如果它拒绝你修改文件,他们也必须是可被你写入的。 |
|