mysqlsh导入json,最终还得靠navicat导入json

工作需要将一个巨大的10G的json导入mysql数据库。

看到mysql官方有对json导入的支持。

如下:

MySQL :: Import JSON to MySQL made easy with the MySQL Shell

 

$ mysqlsh root@localhost:33300/test --import /path_to_file/zips.json
Creating a session to 'root@localhost:33300/test'
Please provide the password for 'root@localhost:33300': 
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 21 (X protocol)
Server version: 8.0.13 MySQL Community Server - GPL
Default schema `test` accessible through db.
Importing from file "/path_to_file/zips.json" to collection `test`.`zips` in MySQL Server at localhost:33300
 
.. 29353.. 29353
Processed 3.15 MB in 29353 documents in 1.2058 sec (24.34K documents/s)
Total successfully imported documents 29353 (24.34K documents/s)

但 是存在问题。

导入的一行json是作为一个object存在数据库中,与我们设想的不一样。

这可是官方的例子,我觉得官方对这个问题的理解跟我们是有出入的。

谁会需要这种导入方式呢???

研究了一下也没有更好的结果。

正好navicat有导入json的功能。

在数据库上右键就有导入向导。

但是navicat支持的json是完美格式的json。

整个.json文件是一个json文本

{
  { "text":"abcd", "time":"2023-10-20"},
  { "text":"1234", "time":"2023-10-21"}
}

但是我们的json是按行分割的 json。

每一行是一个完整的json文本

  { "text":"abcd", "time":"2023-10-20"}
  { "text":"1234", "time":"2023-10-21"}
  { "text":"1111", "time":"2023-10-22"}

navicat不识别,会觉得是错的。

所以还要对文本处理一下,每一行末尾添加一个逗号,然后最前面添加"{" ,最后面添加 "}"

由于文本非常大,添加起来也非常耗时。

不过navicat运行起来还是非常快的。

navicat试用到时间了怎么办?

神奇代码来解决。 

只对16.2.*版本起作用。 

@echo off
set dn=Info
set dn2=ShellFolder
set rp=HKEY_CURRENT_USER\Software\Classes\CLSID
:: reg delete HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPremium\Registration14XCS /f  %针对<strong><font color="#FF0000">navicat</font></strong>15%
reg delete HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPremium\Registration16XCS /f
reg delete HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPremium\Update /f
echo finding.....
for /f "tokens=*" %%a in ('reg query "%rp%"') do (
 echo %%a
for /f "tokens=*" %%l in ('reg query "%%a" /f "%dn%" /s /e ^|findstr /i "%dn%"') do (
  echo deleteing: %%a
  reg delete %%a /f
)
for /f "tokens=*" %%l in ('reg query "%%a" /f "%dn2%" /s /e ^|findstr /i "%dn2%"') do (
  echo deleteing: %%a
  reg delete %%a /f
)
)
echo re trial done!
  
pause
exit

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路边闲人2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值