Ir para conteúdo
Fórum Script Brasil
  • 0

Carga txt em Mysql


Ale3009

Pergunta

Olá Galera.... tenho um banco já pronto c/ as tabelas neste aspecto:

INSERT (codigo_chave, codigo_produto, codigo_categoria, codigo_subcategoria, codigo_marca, Nome_produto, descricao_produto, peso, disponivel, sigla_idioma) INTO `Produtos` VALUES('', 1, 1, 0, 0, 'Cataflan', 'Cataflan D.. Usado para infecções', 0, 1, 'pt_BR');

e preciso inserir via txt uns 6 mil ítens.. como eu poderia fazer isso???

me passaram um arquivo txt com esses dados; mas como seria este script?

Desde já obrigada

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

veja um exemplo:

DROP TABLE IF EXISTS `droplist`;
CREATE TABLE `droplist` (
  `mobId` INT NOT NULL DEFAULT '0',
  `itemId` INT NOT NULL DEFAULT '0',
  `min` INT NOT NULL DEFAULT '0',
  `max` INT NOT NULL DEFAULT '0',
  `category` INT NOT NULL DEFAULT '0',
  `chance` INT NOT NULL DEFAULT '0',
  PRIMARY KEY (`mobId`,`itemId`,`category`),
  KEY `key_mobId` (`mobId`)
) DEFAULT CHARSET=utf8;

INSERT INTO `droplist` VALUES 
(18001,1806,1,1,-1,10868), 
(18001,57,765,1528,0,700000), 
(18001,4069,1,1,1,2102), 
(18001,4070,1,1,1,3192), 
(18001,4071,1,1,1,1615), 
(18001,1419,1,1,2,200000), 
(18001,1864,1,1,2,166667), 
(18001,1866,1,1,2,62500), 
(18001,1878,1,1,2,37037), 
(18001,1885,1,1,2,7092), 
(18001,1889,1,1,2,5435), 
(18001,4197,1,1,2,8);

Link para o comentário
Compartilhar em outros sites

  • 0

o mais facil é abrir o administrador do seu sql e executar o txt por ele... ai depende do tipo dele...

ou para fazer por upload ou executar um arquivo enviado pelo ftp... você vai precisar de alguma coisas...

1- FSO para ler o arquivo;

2- um split para quebrar cada linha de inserção no txt;

3- um loop para executar vada instrução.

insert into tabela (campo1,campo2) values ('var1','var2');
insert into tabela (campo1,campo2) values ('var1','var2');
insert into tabela (campo1,campo2) values ('var1','var2');
insert into tabela (campo1,campo2) values ('var1','var2');

ai le o arquivo com FSO e poe numa variavel ou le linha a linha...

ai fica como você fez linha a linha ou geral... to usando um exemplo de armazenar todo o txt numa var chamada sql...

com o geral use split

sql=split(sql,";")

ai splita... cada um vira um item de array

for i=lbound(sql) to ubound(sql)
conn.execute(sql(i))
next

qualquer coisa manda ai...

Link para o comentário
Compartilhar em outros sites

  • 0

O problema é que não é SQL server.. é My SQL no php admin.. é on line

lá tem uma parte que tem

Importar

Arquivo para importar

Localização do arquivo texto

mas ai q formato tem q esar esse arquivo txt? é só importar depois que da certo?

Obrigada pelas rapidas respostas

Editado por Ale3009
Link para o comentário
Compartilhar em outros sites

  • 0

Tenho isso na minha loja...

<%

'Cria o objeto para upload de arquivo

Set myFileUpload = Server.CreateObject("SoftArtisans.FileUp")

myFileUpload.Form("txtAtualizacao").Path = Application("DiretorioAtualizacaoProdutos")

Arquivo = Mid(myFileUpload.Form("txtAtualizacao").UserFilename, InstrRev(myFileUpload.Form("txtAtualizacao").UserFilename, "\") + 1)

myFileUpload.Form("txtAtualizacao").SaveAs Arquivo

'Destroi o objeto de upload

Set myFileUpload = Nothing

'Cria o objeto para abrir arquivo texto

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

caminho = Application("DiretorioAtualizacaoProdutos") & Arquivo

'Cria o objeto para ler o arquivo texto

Set openTxt = objFSO.OpenTextFile(caminho, 1,0)

'Loop para leitura das linhas do arquivo texto

while (not openTxt.AtEndOfStream) and response.isclientconnected()

linha_txt = openTxt.readline

arrayx = split(linha_txt,"|")

If UBound(arrayx) <> 2 Then

response.write UBound(arrayx)

response.end

End if

'Response.write "SELECT codigo_produto_loja, preco_base, preco_unitario, quantidade_produto FROM produtos WHERE codigo_produto_loja = '" & arrayx(0) & "'"

'Query de consulta a tabela Produtos

Query_produtos = "SELECT codigo_produto_loja, preco_base, preco_unitario, quantidade_produto FROM Produtos WHERE codigo_produto_loja = '" & arrayx(0) & "'"

'Cria objeto para consultar as podutos

Set RS_Produtos = Server.CreateObject("ADODB.Recordset")

'Conexão ADO

Set RS_Produtos.ActiveConnection = Conexao

RS_Produtos.CursorLocation = 3

RS_Produtos.CursorType = 0

RS_Produtos.LockType = 3

'Executa a query

RS_Produtos.Open Query_produtos

'Se o registro existe, atualiza.

If not RS_Produtos.Eof then

preço = arrayx(1)

'Retira o ponto

preco_unitario = replace(preço,".","")

' Retira virgula e repoe por ponto, para evitar problemas no UPDATE, caso banco seja SQL

If Application("TipoBanco")="mssql" Then

preco_unitario = replace(preco_unitario,",",".")

End if

quantidade = arrayx(2)

If preço <> "" Then

'Response.write "UPDATE Produtos SET preco_base = '" & preco_unitario & "', preco_unitario = '"& preco_unitario &"' WHERE codigo_produto_loja = '" & arrayx(0) & "'" & "<br>"

Conexao.Execute "UPDATE Produtos SET preco_base = '" & preco_unitario & "', preco_unitario = '"& preco_unitario &"' WHERE codigo_produto_loja = '" & arrayx(0) & "'"

End if

If quantidade <> "" Then

RS_Produtos("quantidade_produto") = arrayx(2)

Conexao.Execute "UPDATE Produtos SET quantidade_produto = " & arrayx(2) & " WHERE codigo_produto_loja = '" & arrayx(0) & "'"

End if

'Se o registro não existe acumula na variavel indicativa

Else

nolocali = nolocali & arrayx(0) &"|"& arrayx(1) &"|"& arrayx(2) & "<br>"

End if

wend

Set RS_Produtos = Nothing

openTxt.close

'Destrói os objetos criados

set openTxt = nothing

set objFSO = nothing

Call Fecha_conexao()

'Transfere o valor da variavel indicativa para uma session

'A session será exibida na página de upload de arquivo

session("nolocali") = nolocali

'Mensagem de resposta

msg_resultado = "Informações atualizadas"

'Redirect para página do POST

Response.redirect "ADM_envia_txtProdutos.asp?msg_resultado="& msg_resultado

%>

Só que é um update da seguinte forma padrão que é CODIGOPRODUTOLOJA|VALOR|QUANTIDADE (SNY000|3212,40|10)

poderiam me ajudar a transformar isso num INSERT com codigo_categoria|Nome_produto|autor|descricao_produto (1|00010367647896015516642AVODART|0,5 MG C/30 CPS|0263SMITH KLINE 001.2ETICOS - NEG UND00000000000000000100001000122.43000162.83000090.750033.0000000000010D10/2008 07/04/200901/02/200830/01/200804)

Link para o comentário
Compartilhar em outros sites

  • 0

pelo phpmyadmin um arquivo com o conteudo

INSERT INTO `droplist` VALUES 
(18001,1806,1,1,-1,10868), 
(18001,57,765,1528,0,700000), 
(18001,4069,1,1,1,2102), 
(18001,4070,1,1,1,3192), 
(18001,4071,1,1,1,1615), 
(18001,1419,1,1,2,200000), 
(18001,1864,1,1,2,166667), 
(18001,1866,1,1,2,62500), 
(18001,1878,1,1,2,37037), 
(18001,1885,1,1,2,7092), 
(18001,1889,1,1,2,5435), 
(18001,4197,1,1,2,8);

é inserido normalmente...

Link para o comentário
Compartilhar em outros sites

  • 0

droplist é o nome da tabela??? é isso né???... ai o txt todo eu colo assim?

(18001,1806,1,1,-1,10868),

(18001,57,765,1528,0,700000),

(18001,4069,1,1,1,2102),

(18001,4070,1,1,1,3192),

(18001,4071,1,1,1,1615),

(18001,1419,1,1,2,200000),

(18001,1864,1,1,2,166667),

(18001,1866,1,1,2,62500),

(18001,1878,1,1,2,37037),

(18001,1885,1,1,2,7092),

(18001,1889,1,1,2,5435),

(18001,4197,1,1,2,8);

Muito obrigada.. você ta me ajudando muitão

Link para o comentário
Compartilhar em outros sites

  • 0

no exemplo peguei um trecho do banco de dados do l2j

você pode fazer de duas maneiras no txt...

INSERT INTO `tabela` VALUES 
('campo1','campo2','campo3','campo4','campo5','campo6'),
('campo1','campo2','campo3','campo4','campo5','campo6'),
('campo1','campo2','campo3','campo4','campo5','campo6');
terminando cada linha com , e na ultima com;
ou
insert into tabela (campo1,campo2) values ('var1','var2');
insert into tabela (campo1,campo2) values ('var1','var2');
insert into tabela (campo1,campo2) values ('var1','var2');
insert into tabela (campo1,campo2) values ('var1','var2');
em cada linha você poe o insert completo. finalizado por;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...