MSSQL转储为PHP数组

MSSQL转储为PHP数组,php,sql,multidimensional-array,Php,Sql,Multidimensional Array,我有一个巨大的mssql文件转储。我想通过file_get_contents()读取该文件,并根据每行的ID将其全部放到一组数组中。不幸的是,ID在不同的表中被命名为不同的名称。下面的行都是针对一个特定的帖子的(并且是具有相同ID的29个条目中的一个)。在下面的示例中,ID是1234567890 例如: [ID]如下 INSERT [dbo].[sf_CmsContentBase] ([Application], [ID], [MimeType], [StreamingProviderName]

我有一个巨大的mssql文件转储。我想通过file_get_contents()读取该文件,并根据每行的ID将其全部放到一组数组中。不幸的是,ID在不同的表中被命名为不同的名称。下面的行都是针对一个特定的帖子的(并且是具有相同ID的29个条目中的一个)。在下面的示例中,ID是1234567890

例如:

[ID]如下

INSERT [dbo].[sf_CmsContentBase] ([Application], [ID], [MimeType], [StreamingProviderName], [ParentID], [Url], [LoweredUrl], [CommentsCount], [ItemInfo], [Creator]) VALUES (N'/News', N'1234567890', N'text/html', NULL, NULL, N'/2012/URL', N'/2012/url', 0, NULL, N'author')
[ContentID]如下

INSERT [dbo].[sf_CmsTaggedContent] ([Application], [ContentID], [TagID], [Owner]) VALUES (N'/News', N'1234567890', N'3434', N'author')
[项目ID]如下

INSERT [dbo].[sf_VrsTxtData] ([Application], [ItemID], [CultureID], [Version], [KeyValue], [DataImpl], [HasDynamicLinks], [TypeCode]) VALUES (N'/', N'1234567890', 101, 1, N'Thumbnail', N'/news/images/thumbnail.jpg', 0, 18)
所以基本上我要做的是首先从每一行中形成一个数组,所以第一行类似于

$sqlLineArray = array(
    'Application'           => '/News',
    'ID'                    => '1234567890',
    'MimeType'              => 'text/html',
    'StreamingProviderName' => NULL,
    'ParentID'              => NULL,
    'Url'                   => '/2012/URL',
    'LoweredUrl'            => '/2012/url',
    'CommentsCount'         => '0',
    'ItemInfo'              => NULL,
    'Creator'               => 'author'
);
然后我将对这些数组中的每一个进行遍历,为ID命名的差异应用一些条件,然后有另一个多维数组,其中ID是键,它有刚刚在中创建的所有关联子数组,因此我将数据链接在一起,稍后我可以为另一个数据库对其进行规范化

有没有一种简单的方法可以在不查询数据库的情况下使用PHP实现这一点?我只有一个数据转储。我想我可以在很多地方爆炸(),但是ID出现的顺序没有押韵或原因,所以我不一定说ID是$sqlLineArray[2]或什么的,因为它并不总是这样


mssql_fetch_array()似乎有点合适,但第一个参数必须是资源,而不仅仅是查询字符串。

Update

在重读这个问题之后,我错过了从SQL=>PHP数组开始的重要要求。鉴于所有
INSERT
语句都是标准化的,您必须按以下顺序进行分析:

  • 查找每个插入的
  • 查找列列表
  • 寻找价值

  • 这是一个快速而肮脏的解决方案:

    $sql  = "INSERT INTO [dbo].[table]";
    
    //Implode keys
    $sql .= " ([" . implode("], [", array_keys($sqlLineArray)) . "])";
    
    //Implode values
    $sql .= " VALUES ('" . implode("', '", $sqlLineArray) . "') ";
    
    结果

    INSERT INTO [dbo].[table] ([Application], [ID], [MimeType], [StreamingProviderName], [ParentID], [Url], [LoweredUrl], [CommentsCount], [ItemInfo], [Creator]) VALUES ('/News', '1234567890', 'text/html', '', '', '/2012/URL', '/2012/url', '0', '', 'author') INSERT INTO [dbo].[table]([Application], [ID], [MimeType], [Url], [LoweredUrl], [CommentsCount], [Creator]) VALUES (N'/News', 1234567890, N'text/html', N'/2012/URL', N'/2012/url', 0, N'author') INSERT INTO [dbo].[table]([Application], [ID], [MimeType], [StreamingProviderName], [ParentID], [Url], [LoweredUrl], [CommentsCount], [ItemInfo], [Creator]) VALUES (N'/News', 1234567890, N'text/html', NULL, NULL, N'/2012/URL', N'/2012/url', 0, NULL, N'author') 结果

    INSERT INTO [dbo].[table] ([Application], [ID], [MimeType], [StreamingProviderName], [ParentID], [Url], [LoweredUrl], [CommentsCount], [ItemInfo], [Creator]) VALUES ('/News', '1234567890', 'text/html', '', '', '/2012/URL', '/2012/url', '0', '', 'author') INSERT INTO [dbo].[table]([Application], [ID], [MimeType], [Url], [LoweredUrl], [CommentsCount], [Creator]) VALUES (N'/News', 1234567890, N'text/html', N'/2012/URL', N'/2012/url', 0, N'author') INSERT INTO [dbo].[table]([Application], [ID], [MimeType], [StreamingProviderName], [ParentID], [Url], [LoweredUrl], [CommentsCount], [ItemInfo], [Creator]) VALUES (N'/News', 1234567890, N'text/html', NULL, NULL, N'/2012/URL', N'/2012/url', 0, NULL, N'author') 结果

    INSERT INTO [dbo].[table] ([Application], [ID], [MimeType], [StreamingProviderName], [ParentID], [Url], [LoweredUrl], [CommentsCount], [ItemInfo], [Creator]) VALUES ('/News', '1234567890', 'text/html', '', '', '/2012/URL', '/2012/url', '0', '', 'author') INSERT INTO [dbo].[table]([Application], [ID], [MimeType], [Url], [LoweredUrl], [CommentsCount], [Creator]) VALUES (N'/News', 1234567890, N'text/html', N'/2012/URL', N'/2012/url', 0, N'author') INSERT INTO [dbo].[table]([Application], [ID], [MimeType], [StreamingProviderName], [ParentID], [Url], [LoweredUrl], [CommentsCount], [ItemInfo], [Creator]) VALUES (N'/News', 1234567890, N'text/html', NULL, NULL, N'/2012/URL', N'/2012/url', 0, NULL, N'author') 插入到[dbo].[table]([Application]、[ID]、[MimeType]、[StreamingProviderName], [ParentID]、[Url]、[LowereURL]、[CommentsCount]、[ItemInfo]、[Creator]值
    (N'/News',1234567890,N'text/html',NULL,NULL,N'/2012/URL',N'/2012/URL',0,NULL,N'author')我喜欢njks解决方案,但我也提出了自己的可怕解决方案,以防有人感兴趣:

    $data = file_get_contents('relevantlinesoriginal.sql');
    $lines = explode("\n",$data);
    foreach ($lines as $line) {
        $noInsert = explode("] (", $line);
        $noInsert = array_pop($noInsert);
        $separatingNamesAndValues = explode(") VALUES (N'", $noInsert);
        $namesString = $separatingNamesAndValues[0];
        $valuesString = $separatingNamesAndValues[1];
        $names = str_replace(array('[',']'), "", $namesString);
        $values = substr_replace($valuesString, "", -2);
        $names = explode(', ', $names);
        $values = explode(', ', $values);
        $finalArray = array_combine($names, $values);
        var_dump("<pre>", $finalArray, "</pre>");
    }
    
    $data=file\u get\u contents('relevantlinesororiginal.sql');
    $lines=分解(“\n”,$data);
    foreach($line作为$line){
    $noInsert=explode(“]”,$line);
    $noInsert=array\u pop($noInsert);
    $separatingNamesAndValues=explode(“)值(N'”,$noInsert);
    $namesString=$separatingNamesAndValues[0];
    $valuesString=$separatingNamesAndValues[1];
    $names=str_replace(数组('[',']'),'',$namesString);
    $values=substr\U replace($valuesString,“,-2);
    $names=分解(“,”,$names);
    $values=分解(“,”,$values);
    $finalArray=array\u combine($names,$value);
    变量转储(“,$finalArray,”);
    }