mssqlファイルの巨大なダンプがあります。file_get_contents()を介してそのファイルを読み取り、各行のIDに基づいてすべてを配列の束に配置したいと思います。残念ながら、IDはテーブルごとに異なる名前が付けられています。以下の行はすべて1つの特定の投稿に対するものです(同じ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')
以下の[ItemID]
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でこれを行う簡単な方法はありますか?データダンプしかありません。たくさんの場所でexplode()を実行できると思っていますが、IDが表示される順序に韻や理由がないため、IDが$sqlLineArray[2]などであるとは限りません。常にそうなるとは限りません。
mssql_fetch_array()の種類は適切なようですが、最初のパラメーターは、クエリ文字列だけでなく、リソースである必要があります。