• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

继续开帖发问:关于Access导入到mysql的有关问题

mysql 搞代码 7年前 (2018-06-02) 180次浏览 已收录 0个评论

继续开帖发问:关于Access导入到mysql的问题
将Access里的10个表导入到mysql对应的表里,数据量大概是20W条左右,现在采用把ACCESS中的各表直接导出为文本文件,然后在MYSQL中用LOAD DATA FILE来加载导入数据,这样速度确实快了不少,但现在有一个问题:
我用语句:SELECT * INTO [TEXT;DATABASE=”d:/temp”].tablename.txt将Access指定表里的数据导入到对应的txt文件,结果导出的txt文件的第一行是每个列的名字,如果直接load该txt文件的话,mysql数据库里就会有一行数据是每个列的名字;请问我该怎么才能去掉这一行呢?

 
导出的txt文件的内容为:
“ID”, “FirstName”, “LastName”
1, Jay, Lin
2, Linda, Wang
我现在想将txt文件里的第一行去掉

Ps:其实可以通过遍历文件,然后再重写文件实现,但是这样对大数据量的话,速度太慢。

——解决方案——————–
这种问题建议先看一下MYSQLP官方免费手册中的语法

引用

12.2.6. LOAD DATA INFILE Syntax
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE ‘file_name’
[REPLACE | IGNORE]
INTO TABLE tbl_name
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY ‘string’]
[[OPTIONALLY] ENCLOSED BY ‘char’]
[ESCAPED BY ‘char’]
]
[LINES
[STARTING BY ‘string’]
[TERMINATED BY ‘string’]
]
[IGNORE number LINES]
[(col_name_or_user_var,…)]
[SET col_name = expr,…]

——解决方案——————–

引用

13.2.5. LOAD DATA INFILE语法
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE ‘file_name.txt’
[REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY ‘string’]
[[OPTIONALLY] ENCLOSED BY ‘char’]
[ESCAPED BY ‘char’ ]
]
[LINES
[STARTING BY ‘string’]
[TERMINATED BY ‘string’]
]
[IGNORE number LINES]
[(col_name_or_user_var,…)]
[SET col_name = expr,…)]
LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并装入一个表中。文件名称必须为一个文字字符串。

要了解有关INSERT和LOAD DATA INFILE的效率的对比和有关LOAD DATA INFILE加速的更多信息,请参见7.2.16节,“INSERT语句的速度”。

由character_set_database系统变量指示的字符集被用于解释文件中的信息。SET NAMES和character_set_client的设置不会影响对输入的解释。

注意,目前不能载入UCS2数据文件。

您也可以通过使用mysqlimport应用程序载入数据文件;通过向服务器发送一个LOAD DATA INFILE语句实现此功能。–local选项用于使mysqlimport从客户主机中读取数据文件。如果客户端和服务器支持压缩协议,则您可以指定—compress选项提高在慢速网络中的性能。请参见8.10节,“mysqlimport:数据导入程序。

如果您使用LOW_PRIORITY,则LOAD DATA语句的执行被延迟,直到没有其它的客户端从表中读取为止。

如果一个MyISAM表满足同时插入的条件(即该表在中间有空闲块),并且您对这个MyISAM表指定了CONCURRENT,则当LOAD DATA正在执行时,其它线程会从表中重新获取数据。即使没有其它线程在同时使用本表格,使用本选项也会略微影响LOAD DATA的性能。

如果指定了LOCAL,则被认为与连接的客户端有关:

· 如果指定了LOCAL,则文件会被客户主机上的客

IGNORE number LINES选项可以被用于在文件的开始处忽略行。例如,您可以使用IGNORE 1 LINES来跳过一个包含列名称的起始标题行:

mysql> LOAD DATA INFILE ‘/tmp/test.txt’
-> INTO TABLE test IGNORE 1 LINES;
当您联合使用SELECT…INTO OUTFILE和LOAD DATA INFILE来从一个数据库中把数据写入一个文件中,然后再读取文件,返回到数据库中时,用于两个语句的field-和line-handling选项必须匹配。否则,LOAD DATA INFILE不会正确地理解文件的内容。假设您使用SELECT…INTO OUTFILE来编写一个的文件,字段由逗号分隔:

mysql> SELECT * IN

——解决方案——————–
SELECT * INTO t4 IN ODBC[ODBC;Driver={MySQL ODBC 5.1 Driver};Server=localhost;Port=3306;Database=tmp;USER=root;Pwd=123;]
FROM T4;
这种形式不行吗?

——解决方案——————–
你可以直接在ACCESSS的查询中使用类似语句。

SELECT * INTO mysqlTableName IN ODBC[ODBC;Driver={MySQL ODBC 5.1 Driver};Server=localhost;Port=3306;Database=tmp;USER=root;Pwd=123;]
FROM accessTablename;
——解决方案——————–
如果表已经存在则使用下面语句。

insert into mysqlTableName IN ODBC[ODBC;Driver={MySQL ODBC 5.1 Driver};Server=localhost;Port=3306;Database=tmp;USER=root;Pwd=123;] select * from FROM accessTablename;


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:继续开帖发问:关于Access导入到mysql的有关问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址