十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
建议导出成CSV格式,然后打开文件,直接COPY后paste row 导入数据库中。
创新互联主营南岸网站建设的网络公司,主营网站建设方案,成都App制作,南岸h5微信小程序搭建,南岸网站营销推广欢迎南岸等地区企业咨询
1:通过DOM4J对xml中数据进行解析,生成Nodes;
2:通过JDBC把Nodes逐个插入到Mysql中;
这个方法最简单但不是傻瓜式的方法,需要你对Excel和MySQL都有一点点了解。 当然,我在最后提供了一个作为例子的Excel文件,但仍然需要你会写MySQL的INSERT语句,这样才能调试可能出现的错误。 1.在需要导入的数据最后一列,写入一个Excel公式(例子中是“SQL”下面的单元格,“SQL”是不必要的,仅仅是为了看起来方便)。 =CONCATENATE("insert into employee(name,birthday,email,hobby)values('",RC[-4],"','",RC[-3],"','",RC[-2],"','",RC[-1],"');") 这样就会生成insert语句,正如你在例子Excel文件中看到的(当你单击SQL下面的单元格时,可以看到公式)。 这个实际上是使用了Excel的CONCATENATE字符串连接函数,将数据生成你需要的SQL语句。RC[-2]是从最后一列(不包括该列)往前数的第二列。 2.将"SQL"下面单元格的公式复制到该列的其它单元格,这样可以看到生成了所需要的所有SQL语句。 3.将最后一列选中,复制数据到一个文本文件,将该文本文件另存为一个.sql文件(别忘了删除第一行的“SQL”)。 4.能够运行sql文件的工具有很多,运行这个文件就可以了。如果没有工具,参考 在windows下批量执行mysql脚本( )。 使用上面的方法,你需要知道什么样的insert语句对于mysql来说是正确的。 最常见的是日期的格式,如果不转换成字符串,用上面的方法会生成一个整数,这样插入mysql后就不对了。 因此上面的公式改成 =CONCATENATE("insert into employee(name,birthday,email,hobby)values('",RC[-4],"','",TEXT(RC[-3],"yyyy-mm-dd hh:mm:ss"),"','",RC[-2],"','",RC[-1],"');") 这里用到了TEXT函数来将日期格式化成mysql能接受的日期字符串。 具体请参考例子。Excel2Mysql.rar 文件说明如下: doc.txt--本文 SqlGen.xls--Excel例子文件 create.sql--建表语句 insert.sql--生成的insert语句 function.txt--需要在Excel中使用的函数 写了这么多,实际上就一句话:使用Excel的CONCATENATE函数生成sql语句并执行。 如果懂一点儿VBA可以直接生成insert.sql文件
要用php 把XML数据导入mysql ,xml里所有的数据导入数据库
我在php手册里找了个例子
to import xml into mysql
$file = "article_2_3032005467.xml";
$feed = array();
$key = "";
$info = "";
function startElement($xml_parser, $attrs ) {
global $feed;
}
function endElement($xml_parser, $name) {
global $feed, $info;
$key = $name;
$feed[$key] = $info;
$info = ""; }
function charData($xml_parser, $data ) {
global $info;
$info .= $data; }
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "charData" );
$fp = fopen($file, "r");
while ($data = fread($fp, 8192))
!xml_parse($xml_parser, $data, feof($fp));
xml_parser_free($xml_parser);
$sql= "INSERT INTO `article` ( `";
$j=0;
$i=count($feed);
foreach( $feed as $assoc_index = $value )
{
$j++;
$sql.= strtolower($assoc_index);
if($i$j) $sql.= "` , `";
if($i =$j) {$sql.= "` ) VALUES ('";}
}
$h=0;
foreach( $feed as $assoc_index = $value )
{
$h++;
$sql.= utf8_decode(trim(addslashes($value)));
if($i-1$h) $sql.= "', '";
if($i =$h) $sql.= "','')";
}
$sql=trim($sql);
echo $sql;
将外部数据导入(import)数据库是在数据库应用中一个很常见的需求。其实这就是在数据的管理和操作中的ETL
(Extract,
transform,
load)的L
(Load)部分,也就是说,将特定结构(structure)或者格式(format)的数据导入某个目的地(比如数据库,这里我们讨论MySQL)。
ETL
Process
本文要讨论的内容,是如何方便地将多种格式(JSON,
Text,
XML,
CSV)的数据导入MySQL之中。
本文大纲:
将Text文件(包括CSV文件)导入MySQL
将XML文件导入MySQL
将JSON文件导入MySQL
使用MySQL
workbench的Table
Data
Export
and
Import
Wizard进行JSON或CSV文件的导入导出
1.
将Text文件(包括CSV文件)导入MySQL
这里我们的讨论是基于一个假定,Text
file和CSV
file是有着比较规范的格式的(properly
formatted),比如说每行的每个数据域(field)之间是由一个共同的分隔符(比如tab:
\t)分隔的。
那么首先,你需要根据你的数据的格式(有哪些域),来设计好数据库的对应的表
(的Schema)。
举个例子,要处理的Text文件或者CSV文件是以\t作为分隔符的,每行有id,
name,
balance这么三个数据域,那么首先我们需要在数据库中创建这个表:
CREATE
TABLE
sometable(id
INT,
name
VARCHAR(255),
balance
DECIMAL(8,4));
创建成功以后就可以导入了。操作方式很简单:
LOAD
DATA
LOCAL
INFILE
'你的文件路径(如~/file.csv)'
INTO
TABLE
sometable
FIELDS
TERMINATED
BY
'\t'
[ENCLOSED
BY
'"'(可选)]
LINES
TERMINATED
BY
'\n'
(id,
name,
balance)
这里要注意的是,我们需要开启local-infile这个MySQL的配置参数,才能够成功导入。究其原因,从MySQL的Manual中可以看到这么一段话:
LOCAL
works
only
if
your
server
and
your
client
both
have
been
configured
to
permit
it.
For
example,
if
mysqld
was
started
with
--local-infile=0,
LOCAL
does
not
work.
See
Section
6.1.6,
“Security
Issues
with
LOAD
DATA
LOCAL”.
举例说明如下
xml文件名为: text.xml
xml数据文件的结构如下:
node1
node2 name="abc"123/node2
/node1
sql命令如下:
SET @xml = LOAD_FILE('text.xml'); -- 要指定完整的文件位置
SELECT ExtractValue(@xml, '/node1/node2/@name') as name,ExtractValue(@xml, '/node1/node2') as data;
返回数据结果就是:
name | data
abc | 123