**Use case**
Manually modify the contents of ZooKeeper.
Not for normal usage scenarios... mostly for operations engineers.

**Describe the solution you'd like**

Allow INSERT. It should contain only subset of the columns, because some of the columns in `system.zookeeper` table (like numChildren, ctime, etc...) cannot be specified explicitly.

INSERT will perform multiple create operations.

Add a setting to perform set operations (update existing nodes) instead of creating new nodes.

**Additional context**

Also it will be nice to allow "full scan" queries to `system.zookeeper` table to quickly creating dumps.
It can be filtered by condition on prefix of path.

{
    String path_corrected;
    
    
    if (path.empty() || path[0] != '/')
        path_corrected = '/';
    path_corrected += path;
    
    if (path_corrected != "/" && path_corrected.back() == '/')
        path_corrected.resize(path_corrected.size() - 1);
    return path_corrected;
}
static bool extractPathImpl(const IAST & elem, Paths & res, ContextPtr context, bool allow_unrestricted)
{
    const auto * function = elem.as<ASTFunction>();
    if (!function)
        return false;
    if (function->name == "and")
    {
        for (const auto & child : function->arguments->children)
            if (extractPathImpl(*child, res, context, allow_unrestricted))
                return true;
        return false;
    }