Mysql load data local命令详解

2023-11-11

1、load data local命令使用方法

不指定字段名

此写法数据文件内字段数必须跟数据库表一致

load data local infile "C:\\test.txt" into table tableName CHARACTER SET gbk fields terminated by '|' LINES TERMINATED by '\n';

自定义列导入(推荐使用)

在生产环境中推荐使用自定义列导入,这样如果是不需要的字段,就可以不接这个字段内容,这样就不必改表结构。还可以做成数据库配置等进行维护。

//不需要的列直接用@过滤掉就可以了(可以使用同一个变量名比如@a,或者使用我下面不同的变量名加上@符号)
//不需要的列的列名可以随便定义,但是没有加@符的需要跟数据库表字段名一一对应。
// 不需要的列也需要跟数据文件中的字段一一对应,类似于占个坑,但是不进行数据绑定。
load data local infile "C:\\test.txt" into table tableName CHARACTER SET gbk fields terminated by '|' LINES TERMINATED by '\n' (c1,@2,c3,@4, c5,@6,c7,@8,c9,@10);
// set命令可以设置默认值,可以直接赋值, 也可以使用if判断,跟update 差不多。
load data local infile "C:\\test.txt" into table tableName CHARACTER SET gbk fields terminated by '|' LINES TERMINATED by '\n'  (c1,c2,c3,c4,c5,c6,c7,c8,c9,c10) set c1 = '1', c9=if(c9='0000-00-00',now(),c9)

数据文件数据样例

1|test|3|tmp|5
6|string|8|a|10

2、命令解析

infile "C:\\test.txt"  // 这是你的数据文件存放的位置  最好使用双引号和使用转义符进行路径转义
into table tableName  // 这是你数据库的表名
CHARACTER SET gbk  // 这是以什么字符编码读取你的数据文件,当你的文件和数据库不对应的时候需要设置(对应的话就不需要)。当你的数据文件是gbk的时候你需要设置成gbk。
fields terminated by '|'  // 这个是你的数据文件字段是以什么方式进行分割的。这个是以竖线分割
LINES TERMINATED by '\n'  // 这个是你的数据文件一条数据是以什么方式区分的。这里是以换行进行区分的。
(c1,c2,c3,c4,c5,c6,c7,c8,c9,@c10)   // 指定列导入,跟数据库表字段对应,不需要的列加@符占个坑位。不需要的列名可随便定义,需要的列名跟数据库字段对应。
set c1 = '1', c9=if(c9='0000-00-00',now(),c9)  // 给导入的数据设置值,这里判断的值是导入后的值,比如这个例子是当一个时间类型的数据时在数据文件里是个空的时候导入到表中对应是个0000-00-00  而不是null。所以这里要用0000-00-00,而不是""。

3、注意事项

  1. 导入的列不会为null 始终会有一个默认值,
  2. 当数据文件为null的时候如果你的字段类型是int类型,那么导入的值会为0,
  3. 如果是double类型,那么导入的就会为0.0数据库保留几位小数,则带几位小数
  4. 如果是varcher类型,则是空字符串
  5. 最重要的一点,在数据库版本为5.*的版本,会有一个默认时间的bug,当你时间格式为null 的时候,数据库会默认帮你填充0000-00-00 然而这个时间不合法的,假如你需要查到java 中是无法进行绑定的,而且数据库也不认这个时间,假如你要复制这条数据到另外一个表中,是无法插入的。所以在这里建议大家时间设置成varchar类型,或者在load 的时候进行判断把这个时间替换掉。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql load data local命令详解 的相关文章

  • 我应该定义索引(A)和索引(B),还是索引(A,B),或者两者都定义?

    在我的表中 我有两个密切相关的列 A 和 B 我应该考虑哪些因素来决定是否创建 索引 A 和索引 B 索引 A B 以上两者 如果我 仅使用类似的查询where A 5 and B 10 并且从不喜欢where A 5 也可以使用类似的查询
  • 如何从 MySQL 中的布尔类型返回不同的字符串?

    如果我在 MySql 中将一列设置为布尔值 则查询将返回以下值 0 or 1 是否可以做这样的事情 SELECT bool value AS yes OR no 我的意思是 根据真假返回两个不同的字符串 SELECT CASE WHEN b
  • 为 java 项目创建安装

    我创建了一个 java 项目 它使用数据库来检索 编辑和保存数据 我使用 Netbeans 完成了该项目 现在我想在该项目之外创建一个安装 为此 我想包含与项目一起安装的数据库 我用来连接数据库的代码是 Class forName com
  • MySQL:“您的 SQL 语法错误...靠近键...”? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我发现了一个非常酷的用于丢失密码的脚本 但是这一行给我带来了问题 r mysql query INSERT INTO keys u
  • 打印表数据mysql php

    我在尝试打印表格的一些数据时遇到问题 我是 php mysql 的新手 但我认为我的代码是正确的 这里是 h1 Lista de usu rios h1
  • MYSQL 的 Google OAuth 2.0 用户 ID 数据类型

    我正在实施 Google OAuth 2 0 并注意到 Google OAuth 返回的唯一用户 ID 是21位数字长的 我想大整数 20 足以满足这种需求 但我现在看到 Google OAuth 返回的用户 ID 的长度感到困惑 关于我应
  • 如何重命名 MySQL 数据库(更改架构名称)?

    如何快速重命名 MySQL 数据库 更改其架构名称 通常我只是转储数据库并使用新名称重新导入它 对于非常大的数据库来说 这不是一个选项 显然RENAME DATABASE SCHEMA db name TO new db name 做了坏事
  • 无法在类上找到适当的构造函数

    我正在尝试将本机 SQL 结果映射到 POJO 但它返回错误 这是完整的堆栈跟踪 Hibernate SELECT FROM members tb where memberName like 2019 12 19 07 40 20 688
  • 维护/更新mysql中的记录顺序

    我在 mySql 中有一个记录表 我需要按照用户指定的方式维护它们的订单 所以我添加了一个 位置 列 当我移动特定记录时更新所有记录的 SQL 语句是什么 我有类似的东西 UPDATE items SET position 2 WHERE
  • 我应该使用平面表还是标准化数据库?

    我目前正在开发一个使用 MySQL 数据库作为后端的 Web 应用程序 在继续下一步之前 我需要知道什么更适合我的情况 简而言之 在这个应用程序中 用户将能够使用任何数字字段 他们决定 构建自己的表单 现在我将其全部存储在通过外键链接的几个
  • 是否可以将新表和旧表从触发器传递到 MySQL 中的过程中?

    是否可以将新表和旧表从触发器传递到 MySQL 中的过程中 我怀疑不会 因为没有过程接受的表这样的数据类型 有什么可能的解决方法吗 理想情况下它看起来像这样 CREATE TRIGGER Product log AFTER UPDATE O
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • 计算 mysql 数据库行数的最佳方法

    在遇到 mysql 查询加载时间慢的问题后 我现在正在寻找计算行数的最佳方法 我曾经愚蠢地使用过mysql num rows 函数来做到这一点 现在意识到这是最糟糕的方法 我实际上正在制作一个分页来用 PHP 制作页面 我找到了几种计算行数
  • 何时在 mysql 中使用 Union [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 对于 Union 您会在什么现实情况下使用它 因为对我来说 对具有不同列用途 含义的两个表中的两个选择查询使用联合是没有意义的 例如
  • 如何将 MySQL 查询输出保存到 Excel 或 .txt 文件? [复制]

    这个问题在这里已经有答案了 如何将 MySQL 查询的输出保存到 MS Excel 工作表 即使只能将数据存储在 txt文件 就可以了 From 将 MySQL 查询结果保存到文本或 CSV 文件中 http www tech recipe
  • MySQL Python 关于重复键更新值

    我正在研究使用 python 将 JSON 数据上传到 MySQL 我需要在插入语句中包含 ON DUPLICATE KEY UPDATE VALUES 但在 Python 中遇到了问题 如果我运行以下代码 一切正常 import json
  • 加载数据infile,Windows和Linux的区别

    我有一个需要导入到 MySQL 表的文件 这是我的命令 LOAD DATA LOCAL INFILE C test csv INTO TABLE logs fields terminated by LINES terminated BY n
  • 在MySQL中生成随机字符串

    我正在尝试使用函数在 phpmyadmin 中获取随机字符串 我有以下代码 CREATE FUNCTION randomPassword RETURNS varchar 128 BEGIN SET chars ABCDEFGHIJKLMNO
  • 使用连接池后如何处理过多的并发连接?

    Scenario 假设您有一个拥有大量流量的网站或应用程序 即使使用数据库连接池 性能也会受到真正的打击 站点 应用程序甚至可能崩溃 因为并发连接太多 Question 人们有什么选择来处理这个问题 我的想法 我在想有这个问题的人可以创建多
  • 使用“INSERT ... ON DUPLICATE KEY UPDATE”插入多条记录

    我的表结构 table marks 我的目标 我想用条件插入或更新多条记录 我目前正在通过此查询进行检查 第一步 SELECT FROM marks WHERE student 115 AND param 1 第二步 if records

随机推荐

  • 【Linux】Linux安装搜狗输入法

    Linux安装搜狗输入法 1 安装Fcitx sudo apt install fcitx bin sudo apt get install fcitx table 2下载搜狗输入法 下载地址为 http pinyin sogou com
  • MySQL主从复制配置

    主从同步原理 准备两台机器 master 192 168 44 121 slave 192 168 44 128 如果用clone的方式得到两个MySQL服务 需要注意的地方 不同机器的UUID不能重复 否则IO线程不能启动 find na
  • Charles--01--安装和使用

    文章目录 前言 安装和破解 安装 破解 使用 连接 1 电脑端连接 2 手机端连接 问题 如何捕获本地 localhost 数据 产生原因 解决方法 前言 Charles是一款代理服务器 通过过将自己设置成系统 电脑或者浏览器 的网络访问代
  • 面向对象的语言

    面向对象的语言 面向过程和面向对象的设计思想 面向过程 procedure oriented programming 缩写POP 分析出解决问题所需的步骤 然后把步骤一部哟不实现 面向对象语言 Object Oriented Languag
  • IT项目管理大作业技术报告

    大作业项目中承担的角色 第一次团队作业项目前期研究 第一个是 中大人IT生活攻略 描述目前应用情况 另一个是 中大人的移动生活攻略 描述Program实现后的美好生活 第二次团队作业调查与研究 云或移动项目管理服务软件 竞品分析 调查Wor
  • 通过PIL打开图片并显示

    输入 from PIL import Image import matplotlib pyplot as plt pil im Image open 1 jpg pil im Image open 1 jpg convert L 灰度操作
  • Mysql中如何截取json字符串中指定片段再对其进行模糊查询--SUBSTRING_INDEX(s, delimiter, number)函数的实战运用

    应用场景 给你一个表单信息的字符串 如下 数据1 checkbox 1611194769273 Option 1 Option 2 checkbox 1611194771312 Option 2 Option 3 数据2 checkbox
  • 认识smack中的基本对象 - Registration

    一 Registration类的介绍 Registration是信息查询包IQ的子类 所以它也包含表示操作类型的四个属性 GET SET等 当其类型属性为GET时 表示从服务器获取注册对象的信息 而SET类型则表示创建用户 或者是更新已有用
  • 万能密码学习

    select userid from cms users where username 用户名 and password md5 密码 如上 如果知道用户名 注入类型为字符型使用admin and 1 1 即可完成绕过验证 数字型省去闭合即
  • build.gradle详解

    简述 1 gt java开发中有两个大名鼎鼎的项目构建ANT Maven 2 gt Google推荐使用的Android Studio是采用Gradle来构建项目的 Gradle是一个非常先进的项目构建工具 Gradle是用了一种基于Gro
  • 性能测试的基本流程

    本文主要介绍下性能测试的基本流程 性能测试从实际执行层面来看 测试的过程一般分为这么几个阶段 如下图 下面分别介绍下每个阶段具体需要做什么 一 性能需求分析 性能需求分析是整个性能测试工作开展的基础 如果连性能的需求都没弄清楚 后面的性能测
  • 数据库中存储过程、函数、触发器的区别

    存储过程 函数 触发器的区别 比较项目 存储过程 函数 是否有返回值 可以有 也可以没有 必须有且只有一个 是否可以单独执行 可以 必须通过execute执行 SQL语句 DML或SELECT 可否调用 不可以 可以 且可以位于FROM关键
  • MySQL导入frm文件

    前几天我心爱的Windows Server 2003系统忽然崩溃里面装的东西全完了 还好我是装双系统的 还能有个系统用用 在恢复过程中试了很多办法都不行哦 后来去百度搜索一下 mysql导入frm文件 终于找到办法了 现在把这些记在这里 以
  • python获取文件后缀名及批量更新目录下文件后缀名的方法

    coding utf 8 import os 获取文件后缀名称 dict 存放文件后缀名 path r E test for dirpath dirnames filenames in os walk path for filename i
  • QT容器详解

    QString类 隐式共享 隐式数据共享机制去最大化资源有效利用和最小化复制克隆操作 隐式数据共享类当作为函数参数传递的时候 不仅安全而且效率很高 因为传递的时候只是传递了数据的指针 数据本身只当自己被修改的时候才会去复制 简称写时复制 数
  • vue引入vue-jsonp实现解决跨域(例:在项目里调用百度api/腾讯api获取定位)

    第一步 添加依赖npm install vue jsonp save 第二步 在vue cli项目main js中添加 import VueJsonp from vue jsonp 网上很多博客引用不加 会报错 Vue use VueJso
  • 基于STL的演讲流程管理系统

    完整项目代码已上传gitCode 地址 https gitcode net m0 46663240 stl 1 system pause 按任意键之后才会执行下一步 system cls 清屏 2 vector 清空函数 clear 3 s
  • 各类学习资料(网址)汇总~

    移动开发设计 英文 http davidbcalhoun com 2010 viewport metatag 伯乐论坛http blog jobbole com 这里面的东西感觉好有难度 保存起来再看 什么是响应式网站设计 http www
  • 区块链体系架构

    区块链技术经过多年的发展 它们在实现上各有不同 但是在整体架构上是大体上相同的 区块链平台整体上可以划分为网络层 共识层 数据层 智能合约层以及应用层五个部分 一 网络层 区块链平台通常选择完全分布式且可容忍单点故障的P2P协议作为网络传输
  • Mysql load data local命令详解

    1 load data local命令使用方法 不指定字段名 此写法数据文件内字段数必须跟数据库表一致 load data local infile C test txt into table tableName CHARACTER SET