首页 > 编程技术 > php

如何把Access的数据导入到Mysql中

发布时间:2016-11-25 16:42

  在建设网站的过程中,经常要处理一些数据的导入及导出。在Mysql数据库中,一般有两种方法来处理数据的导出:
  1. 使用select * from table_name into outfile “file_name”;
  2. 使用mysqldump实用程序
  下面我们来举例说明:
  假设我们的数据库中有一个库为samp_db,一个表为samp_table。现在要把samp_table的数据导出。则我们可以利用以下方法来实现:
  在Mysql提示符下打入select * from samp_table into outfile “file_name”;
  在系统命令提示符下打入mysqldump 异构数据库之间的导入导出
//MSSQL2EXCEL
ADOConnection1.ConnectionString:=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:mysmallexeexcel2sqlyp.xls;'
'Extended Properties=excel 8.0';
ADOConnection1.Execute('select * into [Abc] from drug_yk IN [ODBC] [ODBC;Driver=SQL
Server;UID=sa;PWD=kcsoft58;Server=127.0.0.1;DataBase=kcsoft_his]');
//把一个MSSQL的数据库表及数据导出到excel中,abc为excel中不存在的表名,drug_yk为MSSQL里的表, sa为
用户, kcsoft58为密码 , 127.0.0.1为服务大地址 ,kcsoft_his是数据库名称
ADOConnection1.Execute('insert into [abc] select * from drug_yk in [ODBC] [ODBC;Driver=SQL
Server;UID=sa;PWD=kcsoft58;Server=127.0.0.1;DataBase=kcsoft_his]');
//把一个MSSQL的数据库表的记录增加到到excel中,执行以后相当于两倍量的数据,一次是导入,一次是
insert
//EXCEL2MSSQL
ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password=KCSOFT58;Persist Security
Info=True;User ID=SA;Initial Catalog=KCSOFT_HIS;Data Source=CHEN';
ADOConnection1.Execute('SELECT * into [abc] FROM OpenDataSource( '
QuotedStr('Microsoft.Jet.OLEDB.4.0') ','
QuotedStr('Data Source="G:mysmallexeexcel2sqlyp.xls";Extended Properties=excel 8.0')
')...[Abc]');
//MSSQL2VFP
ADOConnection2.ConnectionString:=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:mysmallexeexcel2sql;'
'Extended Properties=dBase 5.0';
ADOConnection2.Execute('select * into Abc.dbf from drug_yk IN [ODBC] [ODBC;Driver=SQL
Server;UID=sa;PWD=kcsoft58;Server=127.0.0.1;DataBase=kcsoft_his]');
//把一个MSSQL的数据库表及数据导出到VFP中,Abc.dbf 为VFP中不存在的表名,drug_yk为MSSQL里的表, sa为
用户, kcsoft58为密码 , 127.0.0.1为服务大地址 ,kcsoft_his是数据库名称
//VFP2MSSQL
ADOConnection2.ConnectionString:='Provider=SQLOLEDB.1;Password=KCSOFT58;Persist Security
Info=True;User ID=SA;Initial Catalog=KCSOFT_HIS;Data Source=CHEN';
ADOConnection2.Execute('SELECT * into [abc] FROM OpenDataSource( '
在用Oracle 8.0/2000的机器上安装时,语言请选择English(用户的机器选择Simplified Chinese),然后再用Regedit进行注册表编辑,选取“我的电脑”中的“HKEY_LOCAL_MACHINE”下的“Software→Oracle”,选取Oracle下HOME2的NLS_LANG,其缺省值为:AMERICAN_AMERICA.WE8ISO8859P1,按“编辑”下的“修改”,键入Server端NLS_LANG的值,可选择SIMPLIFIED CHINESE_CHINA.ZHS16CGB231280或AMERICAN_AMERICA.ZHS16CGB231280。
SQLSERVER估计是为了安装或者其它方面,它内置了一批危险的存储过程。能读到注册表信息,能写入注册表信息,能读磁盘共享信息等等……各位看到这儿,心里可能会在想,我的网站中有其它的代码,又不像查询分析器那样能直接将结果输出。给你这个权限,也不能怎么样,还是看不到信息。如果各位这样想就大错特错了。提示一下,如果攻击者有CREATE TABLE的权限,那么创建一个临时表,然后将信息INSERT到表中,然SELECT出来,接着跟数字进行比较,让SQL SERVER报错,那么结果就全出来了……所以我们要报着宁错杀,不放过的态度进行修补。
  
  先来列出危险的内置存储过程:
  
  xp_cmdshell
  
  xp_regaddmultistring
  
  xp_regdeletekey
  
  xp_regdeletevalue
  
  xp_regenumkeys
  
  xp_regenumvalues
  
  xp_regread
  
  xp_regremovemultistring
  
  xp_regwrite
  
  ActiveX自动脚本:
  
  sp_OACreate
  
  sp_OADestroy
  
  sp_OAMethod
  
  sp_OAGetProperty
  
  sp_OASetProperty
  
  sp_OAGetErrorInfo
  
  sp_OAStop
  
  以上各项全在我们封杀之列,例如xp_cmdshell屏蔽的方法为:
  
  sp_dropextendedproc 'xp_cmdshell'
  
  如果需要的话,再用
  
  sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
  
  进行恢复。如果你不知道xp_cmdshell使用的是哪个.dll文件的话,可以使用
  
  sp_helpextendedproc xp_cmdshel
  
  来查看xp_cmdshell使用的是哪个动态联接库。另外,将xp_cmdshell屏蔽后,我们还需要做的步骤是将xpsql70.dll文件进行改名,以防止获得SA的攻击者将它进行恢复。
1. 分号的例外
 对于 MySQL ,第一件你必须牢记的是它的每一行命令都是用分号 (;) 作为结束的,但……没有完全绝对的事,在这儿也是一样,当一行 MySQL 被插入在 PHP 代码中时,最好把后面的分号省略掉,例如:
mysql_query ("INSERT INTO tablename (first_name, last_name)
VALUES ('$first_name', '$last_name')
");
 这是因为 PHP 也是以分号作为一行的结束的,额外的分号有时会让 PHP 的语法分析器搞不明白,所以还是省略掉的好。在这种情况下,虽然省略了分号,但是 PHP 在执行 MySQL 命令时会自动的帮你加上的。
 另外还有一个不要加分号的情况。当你想把要字段的竖者排列显示下来,而不是像通常的那样横着排列时,你可以用 G 来结束一行 SQL 语句,这时就用不上分号了,例如:
SELECT * FROM PENPALS WHERE USER_ID = 1G
2. TEXT、DATE、和 SET 数据类型
 MySQL 数据表的字段必须有定义一个数据类型。这有大约 25 种选择,大部分都是直接明了的,就不多费口舌了。但有几个有必要提一下。
 TEXT 不是一种数据类型,虽然可能有些书上是这么说的。它实际上应该是“ LONG VARCHAR ”或者“ MEDIUMTEXT ”。
 DATE 数据类型的格式是 YYYY-MM-DD ,比如: 1999-12-08 。你可以很容易的用 date 函数来得到这种格式的当前系统时间:
date("Y-m-d")
 并且,在 DATA 数据类型之间可以作减法,得到相差的时间天数:
$age = ($current_date - $birthdate);
 集合 SET 是一个有用的数据类型,它和枚举 ENUM 有点相似,只不过是 SET 能够保存多个值而 ENUM 只能保存一个值而已。而且, SET 类型最多只能够有 64 个预定的值,而 ENUM 类型却能够处理最多 65,535 个预定义的值。而如果需要有大于 64 个值的集合,该怎么办呢?这时就需要定义多个集合来一起解决这个问题了。
3. 通配符
 SQL 的通配符有两种:“ * ”和“ % ”。分别用在不同的情况下。例如:如果你想看到数据库的所有内容,可以像这样来查询:
SELECT * FROM dbname WHERE USER_ID LIKE '%';
 这儿,两个通配符都被用上了。他们表示相同的意思 ?? 都是用来匹配任何的字符串,但是他们用在不同的上下文中。“ * ”用来匹配字段名,而“ % ”用来匹配字段值。另外一个不容易引起注意的地方是“ % ”通配符需要和 LIKE 关键字一起使用。
标签:[!--infotagslink--]

您可能感兴趣的文章: