2012-12-04 31 views
1

我想將此代碼用於php。是否可以將此代碼轉換爲PHP?將T-SQL轉換爲PHP代碼。大塊插入

數據庫:ODBC

- 在此先感謝

USE [ECPNWEB] 
GO 

/****** Object: Table [dbo].[tblMCWD] Script Date: 11/16/2012 14:42:12 ******/ 
SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

SET ANSI_PADDING ON 
GO 

CREATE TABLE [dbo].[tblMCWD](
    [ID] [numeric](18, 0) IDENTITY(1,1) NOT NULL, 
    [ConsumerCode] [varchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
    [ConsumerName] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, 
    [BillingPeriod] [datetime] NULL, 
    [AccountStatus] [nchar](1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, 
    [AccountNumber] [varchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
    [DueDate] [datetime] NULL, 
    [CurrentBill] [float] NULL, 
    [PreviousBill] [float] NULL, 
    [TotalDiscount] [float] NULL, 
    [TotalGrossAmountDue] [float] NULL, 
    CONSTRAINT [PK_tblMCWD] 
     PRIMARY KEY CLUSTERED ([ID] ASC) 
     WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) 
     ON [PRIMARY] 
GO 

BULK INSERT tblmcwd 
FROM 'c:\tblmcwd.txt' 
WITH (
    FIELDTERMINATOR = '|', 
    ROWTERMINATOR = '\n' 
) 
GO 

/* Check the content of the table. */ 
SELECT * 
FROM tblmcwd 
GO 

/* Drop the table to clean up database. */ 
DROP TABLE tblmcwd 
GO 
+0

是的,這是可能的。問題是:你想讓PHP解析數據文件並生成'INSERT',還是隻希望它創建一個'BULK INSERT'語句? –

+0

感謝您的回覆@TheSmose。是我想PHP解析數據文件並生成插入..謝謝..上述代碼運行在Microsoft Sql Server Management Studio ..謝謝.. –

回答

1

這裏是一個開始......我不能保證它會工作,不過......你需要對其進行測試和調試它:

<?php 
try { 
    $dbh = new PDO("mssql:host={$hostname};dbname={$dbname}", $username, $password); 
} catch (PDOException $e) { 
    exit; 
} 
if (($handle = fopen("c:\tblmcwd.txt", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 4096, "|")) !== FALSE) { 
     if (count($data) == 10) { 
      $sql = "INSERT INTO [dbo].[tblMCWD] (
         [ID], 
         [ConsumerCode], 
         [ConsumerName], 
         [AccountStatus], 
         [AccountNumber], 
         [DueDate], 
         [CurrentBill], 
         [PreviousBill], 
         [TotalDiscount], 
         [TotalGrossAmountDue] 
        ) VALUES (
         ?, ?, ?, ?, ?, ?, ?, ?, ?, ? 
        )"; 

      $stmt = $dbh->prepare($sql); 
      $stmt->bindValue(1, $data[0]); 
      $stmt->bindValue(2, $data[1]); 
      $stmt->bindValue(3, $data[2]); 
      $stmt->bindValue(4, $data[3]); 
      $stmt->bindValue(5, $data[4]); 
      $stmt->bindValue(6, $data[5]); 
      $stmt->bindValue(7, $data[6]); 
      $stmt->bindValue(8, $data[7]); 
      $stmt->bindValue(9, $data[8]); 
      $stmt->bindValue(10, $data[9]); 
      $stmt->execute(); 
     } 
    } 
    fclose($handle); 
} 
+0

我調試你構建的代碼並沒有錯誤,但頁面的結果是空白的?我會做什麼?我檢查數據庫,什麼也沒有發生.. –

+0

我不知道,男人...你問我爲你建立一個功能正常的應用程序...到目前爲止,我給了你很多指導..我不會爲自己的複選標記而自殺。學習PHP。 –

+0

順便謝謝你的幫助.. :) –