Jump to content
Fórum Script Brasil
  • 0

Carga txt em Mysql


Question

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 to post
Share on other sites

8 answers to this question

Recommended Posts

  • 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 to post
Share on other 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 to post
Share on other 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

Edited by Ale3009
Link to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      149405
    • Total Posts
      645894
×
×
  • Create New...