macros/insert_resources_from_graph.sql (19 lines of code) (raw):

{% macro insert_resources_from_graph(relation, resource_type='nodes', relationships=False, columns=False, batch_size=var('insert_batch_size') | int) %} {%- set values = get_resource_values(resource_type, relationships, columns) -%} {%- set values_length = values | length -%} {%- set loop_count = (values_length / batch_size) | round(0, 'ceil') | int -%} {%- for loop_number in range(loop_count) -%} {%- set lower_bound = loop.index0 * batch_size -%} {%- set upper_bound = loop.index * batch_size -%} {%- set values_subset = values[lower_bound : upper_bound] %} {%- set values_list_of_strings = [] -%} {%- for indiv_values in values_subset %} {%- do values_list_of_strings.append( indiv_values | join(", \n")) -%} {%- endfor -%} {%- set values_string = '(' ~ values_list_of_strings | join("), \n\n(") ~ ')' %} {%- set insert_statement = "insert into " ~ relation ~ " values \n" ~ values_string ~ ";"%} {% call statement('insert') -%} {{ insert_statement }} {%- endcall %} {% endfor %} {% endmacro %}