各位高手请帮忙帮忙:
     最近我要将mssql里表数据导入到mysql里面,我是先bcp出来,然后在load data infile进去mysql库里面,但问题就出现了,如果表里没null值的话就可以导入到mysql,但如果有null就出现错误:incorrect integer value:'' for column 'ialatitude' at row 1
表结构:
CREATE TABLE `test` (
  `isampleid` int(11) NOT NULL,
  `ifileid` int(11) NOT NULL,
  `itime` int(11) NOT NULL,
  `wtimems` smallint(6) NOT NULL,
  `ialtitude` int(11) DEFAULT NULL
  );
导入数据:
       4###-2044340981###1215662823###472###***
bcp语句:
       bcp dtasystem..test in c:/data/test.bcp -Udtauser -P  -S192.168.2.1 -c -t### -r*** 
c# 写的导入语句:
        public static bool loadData(string strPath, string strFileName)  //
        {
            String strtemp = "";
            strtemp += "load data infile '"
                      + strPath + "/" + strFileName
                      + "' into table "
                      + strFileName.Substring(0, strFileName.IndexOf(".bcp"))
                      + " fields terminated by  '###' lines terminated by  '***'";
            if (execSqlNoReturn(strtemp) == true)
            {
                return true;
            }
            return false;
        }
             

解决方案 »

  1.   

    考虑下这样处理吧:将表的对应字段设置成varchar类型:
    alter table test modify ialtitude varchar(20)然后再导数据导完数据后再把字段数据类型改回来: alter table test modify ialtitude int
      

  2.   

    假如你可以导入,然后‘ialtitude ’为‘’但转换以后会变为null吗?应该不行吧!
      

  3.   

    如果非要变成null的话,那考虑之后进行update转换了要不在sqlserver导出时就直接进行转换成某个值,如用0代替null:bcp dtasystem..test in c:/data/test.bcp -Udtauser -P  -S192.168.2.1 -c -t### -r*** --》bcp "select isampleid,ifileid,itime,wtimems,isnull(ialtitude,0) from dtasystem..test"  in c:/data/test.bcp -Udtauser -P  -S192.168.2.1 -c -t### -r*** 
      

  4.   

    bcp导出时不可用导出NULL或者\N吗? bcp的参数没研究,使用DTS导过没问题
    楼上给的方法挺好,alter成varchar后导入。。
      

  5.   

    楼上的使用dts,具体一点好吗!vinsonshen的方法对几个表是没问题,但现在我表的数量和结构都是非常多样的,用select效果不是很好!而且要对应的每个表都要写一个也不现实。希望有其他方法,在线等!