Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 更换不工作的部件_Mysql_Regex_Replace_Notepad++ - Fatal编程技术网

Mysql 更换不工作的部件

Mysql 更换不工作的部件,mysql,regex,replace,notepad++,Mysql,Regex,Replace,Notepad++,我有一个键值对中数据的文本文件,我已设法将其转换为一种格式,其中键值对之间用下划线分隔,键值与值之间用冒号分隔。我认为这种格式有助于保持数据中的空间完好无损。下面是一个用数据替换~~~~~~~~s的示例 _ID:~~~_NAME:~~~~~_DESCRIPTION:~~~~~~~_TYPE1:~~~~~~_TYPE2:~~~~~~ ...etc 我想将其转换为MySQL脚本,以便将数据插入表中。我的问题是,并非每个记录中都包含可为空的字段。e、 g.记录有\u类型1:,可能有也可能没有\u类型

我有一个键值对中数据的文本文件,我已设法将其转换为一种格式,其中键值对之间用下划线分隔,键值与值之间用冒号分隔。我认为这种格式有助于保持数据中的空间完好无损。下面是一个用数据替换
~~~~~~~~
s的示例

_ID:~~~_NAME:~~~~~_DESCRIPTION:~~~~~~~_TYPE1:~~~~~~_TYPE2:~~~~~~ ...etc
我想将其转换为MySQL脚本,以便将数据插入表中。我的问题是,并非每个记录中都包含可为空的字段。e、 g.记录有
\u类型1:
,可能有也可能没有
\u类型2:

... _DESCRIPTION:~~~~~~_TYPE1:~~~~~~_TYPE2:~~~~~~_ADDRESS:~~~~~~~ ...
... _DESCRIPTION:~~~~~~_TYPE1:~~~~~~_ADDRESS:~~~~~~~ ...
... _DESCRIPTION:~~~~~~_TYPE1:~~~~~~_ADDRESS:~~~~~~~ ...
... _DESCRIPTION:~~~~~~_TYPE1:~~~~~~_TYPE2:~~~~~~_ADDRESS:~~~~~~~ ...
... _DESCRIPTION:~~~~~~_TYPE1:~~~~~~_ADDRESS:~~~~~~~ ...
我想通过在没有
\u TYPE2:
的情况下,在每个
\u TYPE1
之后插入
\u TYPE2:
来解决这个问题。由于可能的类型只有少数几种,因此我设法在每个
\u类型1:~~~~~~~~~~~
之后选择
\u
,但后面没有
类型2:
。我使用了以下正则表达式,
egtype
是一种可能的类型:

(?<=_TYPE1:egtype)_(?!TYPE2:)
(?尝试搜索
(\u TYPE1:)(\S\S\S\S\S)(\u地址:)
并替换为
\1\2\u类型2:~~~~~~\3
我用记事本++测试了你的数据,效果很好
不要忘记将搜索模式更改为正则表达式。 要将其转换为插入脚本,只需像上面一样继续使用正则表达式,并用括号括起所需的任何字段,然后用\number替换任何字段并移动它们,这应该是非常简单的手工劳动,祝您玩得开心。 例如,在这里搜索您的整行,我只做描述、类型1和类型2
搜索是否使用正则表达式
(\u DESCRIPTION)(:)(\S\S\S\S\S)(\u TYPE1)(:)(\S\S\S\S\S)(\u TYPE2)(:)(\S\S\S\S)

然后替换为类似
插入表1\(desc,type1,type2\)值\('\3','\6','\9'\);
(在记事本++)

尝试搜索
(\u type1:)(\S\S\S\S)(\u地址:)
并替换为
\1\2\u类型2:~~~~~~\3
我用记事本++测试了你的数据,效果很好
不要忘记将搜索模式更改为正则表达式。 要将其转换为插入脚本,只需像上面一样继续使用正则表达式,并用括号括起所需的任何字段,然后用\number替换任何字段并移动它们,这应该是非常简单的手工劳动,祝您玩得开心。 例如,在这里搜索您的整行,我只做描述、类型1和类型2
搜索是否使用正则表达式
(\u DESCRIPTION)(:)(\S\S\S\S\S)(\u TYPE1)(:)(\S\S\S\S\S)(\u TYPE2)(:)(\S\S\S\S)

然后替换为类似

插入表1\(desc,type1,type2\)值('\3','\6','\9'\);
(在记事本++)

如果这是一次性问题,则分两步进行。第一步将在每行添加
\u type2:SomeDefaultValue
。第二步将从不需要的行中删除它

步骤1:查找内容:
$
,替换为:
\u TYPE2:xxx

步骤2:查找内容:
(\u TYPE2:.*)\u TYPE2:xxx$
,替换为:
\1


在这两个步骤中,选择“正则表达式”并取消选择“点匹配换行符”。同时将
xxx
更改为您的默认值。

如果这是一次性问题,则分两步进行。第一步将在每行添加
\u TYPE2:SomeDefaultValue
。第二步将从不需要的行中删除它

步骤1:查找内容:
$
,替换为:
\u TYPE2:xxx

步骤2:查找内容:
(\u TYPE2:.*)\u TYPE2:xxx$
,替换为:
\1

在这两个步骤中,选择“正则表达式”并取消选择“点匹配换行符”。同时将
xxx
更改为默认值。

Regex 要执行所需操作,请尝试以下操作:

查找:

替换:

_TYPE2:
您可以使用示例数据对其进行测试,并对其进行解释


Python脚本插件 顺便说一句,我认为不可能使用一个且仅使用一个正则表达式将数据转换为SQL insert语句,虽然我知道您试图通过添加伪TYPE2来做什么,但我认为这不是最好的选择

所以,我的建议是使用Notepad++的Python脚本插件

  • 从插件管理器或从安装Python脚本插件
  • 然后转到插件>Python脚本>新脚本。为新文件选择一个文件名(例如sql_insert.py)并复制下面的代码
  • 运行Plugins>pythonscript>Scripts>sql_insert.py,一个新的选项卡将显示所需的结果
  • 脚本:
    columns=[]]
    值=[]]
    当前_线=0
    def插入(行,匹配):
    全球海流线
    如果行>当前行:
    当前_线+=1
    columns.append([])
    values.append([])
    如果匹配:
    i=0
    对于match.groups()中的m:
    如果i%2==0:
    列[行]。追加(m)
    其他:
    值[line]。追加(m)
    i+=1
    pysearch(“[A-Z0-9]+):([^\n]+)”,插入)
    notepad.new()
    对于范围内的行(列):
    editor.addText(“插入到表中(“+”,”.join(列[line])+”))值(“+”,“.join(值[line])+”);\n”)
    
    注意:我仍在学习Python,我觉得这篇文章可以写得更好。如果你能提出改进建议,请随意编辑我的答案或发表评论

    输入示例: 示例输出: 正则表达式 要执行所需操作,请尝试以下操作:

    查找:

    替换:

    _TYPE2:
    
    您可以使用示例数据对其进行测试,并对其进行解释


    Python脚本插件 顺便说一句,我认为不可能使用一个且仅使用一个正则表达式将数据转换为SQL insert语句,虽然我知道您试图通过添加伪TYPE2来做什么,但我认为这不是最好的选择

    所以,我的建议是使用Notepad++的Python脚本插件

  • 安装Python脚本插件,从插件管理器或
    _ID:~~~_NAME:~~~~~_DESCRIPTION:~~~~~~~_TYPE1:~~~~~~_TYPE2:~~~~~~
    _ID:~~~_NAME:~~~~~_DESCRIPTION:~~~~~~_TYPE1:~~~~~~_TYPE2:~~~~~~_ADDRESS:~~~~~~~
    _ID:~~~_NAME:~~~~~_DESCRIPTION:~~~~~~_TYPE1:~~~~~~_ADDRESS:~~~~~~~
    
    INSERT INTO table (ID,NAME,DESCRIPTION,TYPE1,TYPE2) values (~~~,~~~~~,~~~~~~~,~~~~~~,~~~~~~);
    INSERT INTO table (ID,NAME,DESCRIPTION,TYPE1,TYPE2,ADDRESS) values (~~~,~~~~~,~~~~~~,~~~~~~,~~~~~~,~~~~~~~);
    INSERT INTO table (ID,NAME,DESCRIPTION,TYPE1,ADDRESS) values (~~~,~~~~~,~~~~~~,~~~~~~,~~~~~~~);