<p>我通过使用ExecuteStreamCommand处理器来解决这个问题,该处理器调用一个python脚本,该脚本将JSON行转换成它各自的sqlinsert语句。本例中的关注表是<code>reddit_post</code>。在</p>
<p>python脚本的代码(我知道不需要<code>INSERT</code>参数,但这是因为我计划稍后添加一个<code>UPDATE</code>选项):</p>
<pre><code>import json
import argparse
import sys
# For command line arguments
parser = argparse.ArgumentParser(description='Converts JSON to respective SQL statement')
parser.add_argument('statement_type', type=str, nargs=1)
parser.add_argument('table_name', type=str, nargs=1)
# Reading the command line arguments
statement_type = parser.parse_args().statement_type[0]
table_name = parser.parse_args().table_name[0]
# Initialize SQL statement
statement = ''
for line in sys.stdin:
# Load JSON line
json_line = json.loads(line)
# Add table name and SQL syntax
if statement_type == 'INSERT':
statement += 'INSERT INTO {} '.format(table_name)
# Add table parameters and SQL syntax
statement += '({}) '.format(', '.join(json_line.keys()))
# Add table values and SQL syntax
# Note that strings are formatted with single quotes, other data types are converted to strings (for the join method)
statement += "VALUES ({});".format(', '.join("'{0}'".format(value.replace("'", "''")) if type(value) == str else str(value) for value in json_line.values()))
# Send statement to stdout
print(statement)
</code></pre>
<p>ExecuteStreamCommand的配置(请注意,参数Delimeter设置为一个空格):
<a href="https://i.stack.imgur.com/Guesu.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Guesu.png" alt="enter image description here"/></a></p>
<p>流程片段:<br/>
<a href="https://i.stack.imgur.com/9KUsC.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/9KUsC.png" alt="enter image description here"/></a></p>
<p>我希望这能对遇到类似问题的人有所帮助。如果你有任何关于如何改进脚本,流程,或其他任何建议,请不要犹豫让我知道!在</p>